Where are all the shared libraries (.so) stored on Android? I was able to find the /system/lib directory but I'm sure there are more. Not being able to use the find command doesn't help either.
In the many AOSP and vendor images I have analyzed, I've observed a regular pattern of locations for shared libraries, as follows (some of these are only in newer versions):
system/app/<name>/lib/<arch>
system/priv-app/<name>/lib/<arch>
system/lib
system/lib64
system/vendor/lib
system/vendor/lib64
I've also occasionally seen non-standard locations, for example system/csc/common/system/lib64/ on a Samsung Edge running Android 5.1.1.
Your best bet in finding the location of all shared libraries on a particular device is to recursively search the entire device filesystem as root using find / -name \*.so. If there's no way for you to get find installed (via Busybox or the like), you might try extracting the system image, mounting it on a Linux system and running find over the mounted filesystem.
adb shell 'find / -iname "*.so" 2>/dev/null'
ran surprisingly fast.
Here's all the .so files on my emulator with API level 23. Note that these are implementation details of a device and are not guaranteed to stay the same at any time.
These are all under /system.
./app/LatinIME/lib/x86/libjni_latinime.so
./app/LegacyCamera/lib/x86/libjni_legacymosaic.so
./app/OpenWnn/lib/x86/libWnnEngDic.so
./app/OpenWnn/lib/x86/libWnnJpnDic.so
./app/OpenWnn/lib/x86/libwnndict.so
./app/PacProcessor/lib/x86/libjni_pacprocessor.so
./app/PicoTts/lib/x86/libttscompat.so
./app/PicoTts/lib/x86/libttspico.so
./app/PrintSpooler/lib/x86/libprintspooler_jni.so
./lib/egl/libEGL_emulation.so
./lib/egl/libGLES_android.so
./lib/egl/libGLESv1_CM_emulation.so
./lib/egl/libGLESv2_emulation.so
./lib/hw/audio.primary.goldfish.so
./lib/hw/audio_policy.default.so
./lib/hw/camera.goldfish.jpeg.so
./lib/hw/camera.goldfish.so
./lib/hw/camera.ranchu.jpeg.so
./lib/hw/camera.ranchu.so
./lib/hw/fingerprint.goldfish.so
./lib/hw/fingerprint.ranchu.so
./lib/hw/gps.goldfish.so
./lib/hw/gps.ranchu.so
./lib/hw/gralloc.default.so
./lib/hw/gralloc.goldfish.so
./lib/hw/gralloc.ranchu.so
./lib/hw/keystore.default.so
./lib/hw/lights.goldfish.so
./lib/hw/local_time.default.so
./lib/hw/power.goldfish.so
./lib/hw/sensors.goldfish.so
./lib/hw/sensors.ranchu.so
./lib/hw/vibrator.goldfish.so
./lib/interrupter.so
./lib/invoke_mock_media_player.so
./lib/libEGL.so
./lib/libETC1.so
./lib/libFFTEm.so
./lib/libGLES_trace.so
./lib/libGLESv1_CM.so
./lib/libGLESv1_enc.so
./lib/libGLESv2.so
./lib/libGLESv2_enc.so
./lib/libGLESv3.so
./lib/libLLVM.so
./lib/libOpenMAXAL.so
./lib/libOpenSLES.so
./lib/libOpenglSystemCommon.so
./lib/libRS.so
./lib/libRSCpuRef.so
./lib/libRSDriver.so
./lib/libRScpp.so
./lib/libWnnEngDic.so
./lib/libWnnJpnDic.so
./lib/lib_renderControl_enc.so
./lib/libandroid.so
./lib/libandroid_runtime.so
./lib/libandroid_servers.so
./lib/libandroidfw.so
./lib/libart-compiler.so
./lib/libart-disassembler.so
./lib/libart.so
./lib/libaudioeffect_jni.so
./lib/libaudioflinger.so
./lib/libaudiopolicyenginedefault.so
./lib/libaudiopolicymanager.so
./lib/libaudiopolicymanagerdefault.so
./lib/libaudiopolicyservice.so
./lib/libaudioresampler.so
./lib/libaudiospdif.so
./lib/libaudioutils.so
./lib/libbacktrace.so
./lib/libbacktrace_test.so
./lib/libbase.so
./lib/libbcc.so
./lib/libbcinfo.so
./lib/libbinder.so
./lib/libblas.so
./lib/libc++.so
./lib/libc.so
./lib/libc_malloc_debug_leak.so
./lib/libc_malloc_debug_qemu.so
./lib/libcamera_client.so
./lib/libcamera_metadata.so
./lib/libcameraservice.so
./lib/libcommon_time_client.so
./lib/libcompiler_rt.so
./lib/libcrypto.so
./lib/libcutils.so
./lib/libdefcontainer_jni.so
./lib/libdiskconfig.so
./lib/libdl.so
./lib/libdrmframework.so
./lib/libdrmframework_jni.so
./lib/libeffects.so
./lib/libexif.so
./lib/libexpat.so
./lib/libext2_blkid.so
./lib/libext2_com_err.so
./lib/libext2_e2p.so
./lib/libext2_profile.so
./lib/libext2_quota.so
./lib/libext2_uuid.so
./lib/libext2fs.so
./lib/libext4_utils.so
./lib/libf2fs_sparseblock.so
./lib/libfilterfw.so
./lib/libfilterpack_facedetect.so
./lib/libfilterpack_imageproc.so
./lib/libframesequence.so
./lib/libft2.so
./lib/libgabi++.so
./lib/libgatekeeper.so
./lib/libgiftranscode.so
./lib/libgui.so
./lib/libhardware.so
./lib/libhardware_legacy.so
./lib/libharfbuzz_ng.so
./lib/libhidcommand_jni.so
./lib/libhwui.so
./lib/libicui18n.so
./lib/libicuuc.so
./lib/libimg_utils.so
./lib/libinput.so
./lib/libinputflinger.so
./lib/libinputservice.so
./lib/libiperf.so
./lib/libiprouteutil.so
./lib/libjavacore.so
./lib/libjavacrypto.so
./lib/libjhead.so
./lib/libjhead_jni.so
./lib/libjni_latinime.so
./lib/libjni_legacymosaic.so
./lib/libjni_pacprocessor.so
./lib/libjnigraphics.so
./lib/libjpeg.so
./lib/libkeymaster1.so
./lib/libkeymaster_messages.so
./lib/libkeystore-engine.so
./lib/libkeystore_binder.so
./lib/liblog.so
./lib/liblogwrap.so
./lib/libm.so
./lib/libmdnssd.so
./lib/libmedia.so
./lib/libmedia_jni.so
./lib/libmedialogservice.so
./lib/libmediandk.so
./lib/libmediaplayerservice.so
./lib/libmediautils.so
./lib/libmemtrack.so
./lib/libminikin.so
./lib/libmtp.so
./lib/libnativebridge.so
./lib/libnativehelper.so
./lib/libnbaio.so
./lib/libnetd_client.so
./lib/libnetlink.so
./lib/libnetutils.so
./lib/libnfc_ndef.so
./lib/libnl.so
./lib/libopus.so
./lib/libpac.so
./lib/libpagemap.so
./lib/libpcre.so
./lib/libpdfium.so
./lib/libpixelflinger.so
./lib/libpng.so
./lib/libpower.so
./lib/libpowermanager.so
./lib/libprintspooler_jni.so
./lib/libprocessgroup.so
./lib/libprotobuf-cpp-lite.so
./lib/libradio.so
./lib/libradio_metadata.so
./lib/libradioservice.so
./lib/libreference-ril.so
./lib/libresourcemanagerservice.so
./lib/libril.so
./lib/librilutils.so
./lib/librs_jni.so
./lib/librtp_jni.so
./lib/libselinux.so
./lib/libsensorservice.so
./lib/libserviceutility.so
./lib/libsigchain.so
./lib/libskia.so
./lib/libsoftkeymaster.so
./lib/libsoftkeymasterdevice.so
./lib/libsonic.so
./lib/libsonivox.so
./lib/libsoundpool.so
./lib/libsoundtrigger.so
./lib/libsoundtriggerservice.so
./lib/libsparse.so
./lib/libspeexresampler.so
./lib/libsqlite.so
./lib/libsqlite_jni.so
./lib/libssl.so
./lib/libstagefright.so
./lib/libstagefright_amrnb_common.so
./lib/libstagefright_avc_common.so
./lib/libstagefright_enc_common.so
./lib/libstagefright_foundation.so
./lib/libstagefright_http_support.so
./lib/libstagefright_httplive.so
./lib/libstagefright_omx.so
./lib/libstagefright_soft_aacdec.so
./lib/libstagefright_soft_aacenc.so
./lib/libstagefright_soft_amrdec.so
./lib/libstagefright_soft_amrnbenc.so
./lib/libstagefright_soft_amrwbenc.so
./lib/libstagefright_soft_avcdec.so
./lib/libstagefright_soft_avcenc.so
./lib/libstagefright_soft_flacenc.so
./lib/libstagefright_soft_g711dec.so
./lib/libstagefright_soft_gsmdec.so
./lib/libstagefright_soft_hevcdec.so
./lib/libstagefright_soft_mp3dec.so
./lib/libstagefright_soft_mpeg2dec.so
./lib/libstagefright_soft_mpeg4dec.so
./lib/libstagefright_soft_mpeg4enc.so
./lib/libstagefright_soft_opusdec.so
./lib/libstagefright_soft_rawdec.so
./lib/libstagefright_soft_vorbisdec.so
./lib/libstagefright_soft_vpxdec.so
./lib/libstagefright_soft_vpxenc.so
./lib/libstagefright_wfd.so
./lib/libstagefright_yuv.so
./lib/libstdc++.so
./lib/libsurfaceflinger.so
./lib/libsurfaceflinger_ddmconnection.so
./lib/libsuspend.so
./lib/libsync.so
./lib/libsysutils.so
./lib/libtinyalsa.so
./lib/libttscompat.so
./lib/libttspico.so
./lib/libui.so
./lib/libunwind.so
./lib/libusbhost.so
./lib/libutils.so
./lib/libvixl.so
./lib/libvorbisidec.so
./lib/libwebrtc_audio_preprocessing.so
./lib/libwebviewchromium_loader.so
./lib/libwebviewchromium_plat_support.so
./lib/libwifi-service.so
./lib/libwilhelm.so
./lib/libwnndict.so
./lib/libz.so
./lib/soundfx/libaudiopreprocessing.so
./lib/soundfx/libbundlewrapper.so
./lib/soundfx/libdownmix.so
./lib/soundfx/libeffectproxy.so
./lib/soundfx/libldnhncr.so
./lib/soundfx/libreverbwrapper.so
./lib/soundfx/libvisualizer.so
./priv-app/DefaultContainerService/lib/x86/libdefcontainer_jni.so
./priv-app/Velvet/lib/x86/libcronet.so
./priv-app/Velvet/lib/x86/libgoogle_speech_jni.so
./priv-app/Velvet/lib/x86/libgoogle_speech_micro_jni.so
./priv-app/Velvet/lib/x86/libvcdecoder_jni.so
./vendor/lib/egl/libEGL_swiftshader.so
./vendor/lib/egl/libGLESv1_CM_swiftshader.so
./vendor/lib/egl/libGLESv2_swiftshader.so
./vendor/lib/libfrsdk.so
./vendor/lib/mediadrm/libdrmclearkeyplugin.so
./vendor/lib/mediadrm/libwvdrmengine.so
Related
I'm studying the android kernel as a beginner. I can read the messages thrown from the macro ERROR() inside the function main() at system/core/init/init.c using dmesg command through adb. I observed that after calling the function open_devnull_stdio() inside main(), dmesg no longer displays the messages thrown by ERROR().
To find the reason, I started digging into the declaration of open_devnull_stdio() inside system/core/init/util.c and I found this line I can't understand
static const char *name = "/dev/__null__";
Actually there was no file named __null__ inside /dev/ in the device, but there was a file named null and I was able to grab it using adb pull and it was a 0 byte (empty) file.
So why is a file name wrapped with double underscore (__) ?
Here is the link for the util.c
There is no special purpose of using double underscore before the start, after the end or both in C. From the point of view of C the file name is just a string, the operating system is free to interpret in whatever way it chooses. From the point of view of Linux, the same applies. Underscores in file names are just characters. They are not treated differently from the letters b and t.
If I guessed right and I'm reading the same file as you (it might be a good idea to link to the source code you're reading) then it should be pretty obvious what the code does on the lines after the one you mentioned. The next lines are:
if (mknod(name, S_IFCHR | 0600, (1 << 8) | 3) == 0) {
fd = open(name, O_RDWR);
unlink(name);
Which creates the null device which is then opened and immediately deleted again.
I suspect this is done so that programs can run without access to the root filesystem and still be able to open the equivalent of /dev/null.
I don't know the answer but I have an idea:
The following page shows an "strace" output where /dev/__null__ is used:
https://gist.github.com/tetsu-koba/1522515
Under Linux device files have a 33-bit (?) number which identifies the device. (At least under old Linux versions) you could delete some file in /dev and you could restore it or even create it in another directory (!) when you know the 33-bit number! (So you can delete the device /dev/sda2 and create the device (not file!) /home/myuser/sda2 instead.)
The trace in the link above shows the following three lines:
mknod("/dev/__null__", S_IFCHR|0600, makedev(1, 3)) = 0
open("/dev/__null__", O_RDWR|O_LARGEFILE) = 3
unlink("/dev/__null__") = 0
These lines will create the device file /dev/__null__ (with the 33-bit number identifying /dev/null). Then it opens that file and then it removes the file again.
Maybe this is done because the tool shall be able to run both on Linux installations where the device file "/dev/null" is present (in this case the file should not be overwritten) and on installations where that file is missing (in this case a replacement file must be created using the known 33-bit number).
As other people have pointed out this just tells it's the "null device", not a regular file called "null". null is supposed to act like an information sink, not like a normal file where you dump your data to. Hope this helps.
I'm using logback for android, and I'm configuring it in code because I want the log directory to dynamically change depending on the phone (e.g. some phones have external storage and I want to write to that, but other phones don't so we have to redirect to internal storage).
Here is my config code:
File logFilesDir = getLogFilesDir(this);
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
lc.reset();
RollingFileAppender<ILoggingEvent> fileAppender = null;
lc.putProperty("LOG_DIR", logFilesDir.getAbsolutePath());
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(lc);
encoder.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
encoder.start();
File logFile = new File(logFilesDir, "MyApplication.log");
FixedWindowRollingPolicy rollingPolicy = new FixedWindowRollingPolicy();
rollingPolicy.setContext(lc);
rollingPolicy.setFileNamePattern("${LOG_DIR}/MyApplication.%i.log");
rollingPolicy.setMinIndex(1);
rollingPolicy.setMaxIndex(5);
SizeBasedTriggeringPolicy<ILoggingEvent> triggeringPolicy = new SizeBasedTriggeringPolicy<>();
triggeringPolicy.setContext(lc);
triggeringPolicy.setMaxFileSize("1KB"); // for testing; would otherwise be 5MB
fileAppender = new RollingFileAppender<>();
fileAppender.setContext(lc);
fileAppender.setFile(logFile.getAbsolutePath());
fileAppender.setEncoder(encoder);
fileAppender.setRollingPolicy(rollingPolicy);
fileAppender.setTriggeringPolicy(triggeringPolicy);
rollingPolicy.setParent(fileAppender);
fileAppender.start();
rollingPolicy.start();
triggeringPolicy.start();
// add the newly created appenders to the root logger;
// qualify Logger to disambiguate from org.slf4j.Logger
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.addAppender(fileAppender);
root.info("----- Application onCreate -----");
StatusPrinter.print(lc);
The log writes to the correct folder and it's all working ok, except when my log file exceeds the max file size (in my testing case 1KB) it fails to roll over. Instead, the file just keeps growing.
StatusPrinter.print writes the following output, which looks like everything's ok
|-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [assets/logback.xml]
|-INFO in ch.qos.logback.core.rolling.RollingFileAppender[null] - Active log file name: /storage/emulated/0/MyApplication/logs/MyApplication.log
|-INFO in ch.qos.logback.core.rolling.RollingFileAppender[null] - File property is set to [/storage/emulated/0/MyApplication/logs/MyApplication.log]
|-INFO in ch.qos.logback.core.rolling.FixedWindowRollingPolicy#34b71b53 - No compression will be used
I've looked at as many other similar issues as I can find, and usually people seem to miss out the RollingFileAppender or don't have WRITE_EXTERNAL_STORAGE permission... It doesn't seem to me like I'm hitting any of those cases. Is something about my code (vs the XML people normally use) different?
Is there anything I can do to fix this or troubleshoot it further?
Thanks
I can't immediately tell what the problem is, but it would be helpful add an OnConsoleStatusListener to see what happens during the rollover:
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
lc.reset();
OnConsoleStatusListener.addNewInstanceToContext(lc);
Rollover problems from RollingFileAppender are typically caused by a mix of absolute and relative paths in their configuration (Issue #117, Issue #110) or missing the WRITE_EXTERNAL_STORAGE permission (which is not the case for you). The debug output from OnConsoleStatusListener might shed some light. If not, I can try to debug it if you create a GitHub Issue, preferably with an Android Studio project that reproduces the problem.
My goal is to add a single printk command to one of the driver files for my phone's touchscreen. I would like to run this printk command everytime the screen recieves touch input. I found the list of touchscreen driver files shown below. I'm just hoping someone with some experience might be able to point me to the correct file to place this printk command.
ad7877.c atmel_224e.c cy8ctmg110_ts.c gunze.c intel-mid-touch.c
max11801_ts.c pcap_ts.c touchit213.c ucb1400_ts.c wm9712.c
ad7879.c atmel_mxt_ts.c da9034-ts.c h3600_ts_input.c jornada720_ts.c
mc13783_ts.c penmount.c touchright.c usbtouchscreen.c wm9713.c
ad7879.h atmel_tsadcc.c dynapro.c hampshire.c Kconfig
mcs5000_ts.c s3c2410_ts.c touchwin.c w90p910_ts.c wm97xx-core.c
ad7879-i2c.c atmel-wm97xx.c eeti_ts.c hp680_ts_input.c lpc32xx_ts.c
migor_ts.c st1232.c tps6507x-ts.c wacom_w8001.c zylonite-wm97xx.c
ad7879-spi.c bu21013_ts.c elo.c htcpen.c mainstone-wm97xx.c
mk712.c stmpe-ts.c tsc2005.c wm831x-ts.c
First Check the Driver file by using the following command on terminal:
$logcat | grep EventHub
You will find all the input devices (Including your touch driver) in the prints.
Go to that file and add the print command in interrupt handler.
Try running the getevent command in a shell on the Android device. The touchscreen should be listed, and the name should be the driver being used.
Here's what came up on my phone:
add device 7: /dev/input/event1
name: "synaptics_dsx"
This means my phone uses the synaptics_dsx touchscreen driver.
I want to view and edit my org-file in my Android phone, I synchronize files with Ubuntu one. I added such code in .emacs
(setq org-mobile-directory "~/Documents")
and I also set Org Mobile Directory as ~/Documents in Org Mobile Group. But I can't push any org-file to my phone. When I open an org-file in Emacs and C-c-x RET p, Emacs shows this message.
Please set 'org-direcory' to the directory where your org files live
I don't know why after I did such setting above Emacs still gave me this message.
All I can do in my phone is simply capture a new note, I input something and they can be synchronized with my PC under the ~/Ubuntu One/mobileorg.org. But I can't read what I load into my phone.
I read the web:synchronizing, I found I can't find those three files in my dirctory: checksum.dat, index.org and agendas.org.
What do I need to view org-files in my phone, and push org-files into my phone?
Where do you store your .org files, which you want to export to org-mobile? For example, i store mine in ~/labor and export file ~/labor/tasks.org, and also use OwnCloud WebDAV to synchronize with MobileOrg, so i have set:
(setq org-directory "~/labor")
(setq org-mobile-directory "~/dl/owncloud/mobileorg")
(setq org-agenda-files '("~/labor/tasks.org"))
(setq org-mobile-inbox-for-pull "~/labor/from-mobile.org")
As Pushing to MobileOrg says, pushing stages only the files listed in org-agenda-files or org-mobile-files and puts them in org-mobile-directory retaining the same structure, as it where in org-directory. As Pulling from MobileOrg says, org-mobile-inbox-for-pull is a file in org-directory, in which captured notes are pulled from the phone, which you will need to manually add wherever you want.
To setup:
Put a list of .org files, that you want to have on your phone, in org-agenda-files or org-mobile-files variables;
Set org-directory and org-mobile-directory - you've done that;
Setup MobileOrg on the phone with Ubuntu One directory;
Set org-mobile-inbox-for-pull to some file in org-directory
Your usual workflow will look like:
Execute org-mobile-push (C-c C-x RET p) in Emacs;
Synchronize the phone;
Do something in MobileOrg;
Synchronize the phone;
Execute org-mobile-pull (C-c C-x RET g) in Emacs;
I have search Android docs and for some insane reason I am not able to find the list of all available intent filters.
I am finding an intent filter, which would do something like notifying me through Broadcast Receiver that a particular Activity (example browser, or email) has been started or in the foreground.
Can anyone help me with that?
PackageExplorer lists all intent-filters defined in apps in your device
To answer your question: You create the intent-filter(s) you want to be used to cause your activity to be selected when a program is looking for a service or activity. So each Activity in a Package defines it own list of intent-filters.
I found it useful to have a list of all intent-filters defined by all the applications on a device -- so would know what apps the system would invoke when an intent was processed. I put a free app on Android Market, search for 'Package Explorer' that searches all apps it can find on your device, decodes the AndroidManifest.xml file and displays a list of all intent-filters defined by all apps. The table of all intent-filters can be sorted by Action, Category, Data fields(ie scheme or mimetype), package name or intent-filter type so you can find all Activites on your device that respond to various Actions or Categories.
Package Explorer also collects all uses-permissions fields in the manifest and displays a list of which apps require which permissions. So you can find all packages that use 'SEND_SMS' or something like that. Clicking on the name of a package displays the decoded (uncompressed binary) AndroidManifest.xml for the package.
If you are off device you can just run the following:
adb shell dumpsys package r
This will give you a list of all the statically registered intent filters.
Expanding on Tom Fraser's answer, the best way is by using dumpsys with a grep and sort.
dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort
The grep expression makes sure to only catch lines ending in the intent like format of ...blahblah.SOME_INTENT:. It may not catch all, but it's a good start.
You're not going to find that. Intent filters are defined by the application. You'd have to look at the documentation for the paritcular application you're interested in.
this post is old but for anyone looking for manifest info from apps installed on a particular android dwld this GOD app:
https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
There is GET_INTENTS_FILTER - declared to be be used in the future to query the intents filters, see also http://code.google.com/p/android/issues/detail?id=3217
However, priority at the Android team is small. Anybody up to submit a patch?
(partial answer) IntentFilters are defined in the AndroidManifest.xml file contained in the application's .apk file. (in the -> -> -> XML element, like this:
I haven't found an API for searching all Intents defined in all .apk files stored on a device. The system searches the list of all intents in: android.content.Context.startActivity(Intent intent)
Which calls a native method in android.app.ActivityManagerNative.startActivity() which uses an interprocess communication (IPC) mechanism (using a serialization of the informtation in a 'Parcel' object) to search the intents and start the Activity. So I could find how it is really done.
It appears that you can get read access to .apk files (many are stored in /system/app/*.apk). The .apk file is a .jar file and the AndroidManifest.xml file is available in that, so a program should be able to read and parse the manifest and find the IntentFilters -- but there should be API to make this easy.
There is a "database" at http://www.openintents.org/intentsregistry/ that tries to collect known intent filters. Also the doumentation for Intent lists some.
You can check the list of standard actions and categories in the sdk/platforms/android-x/data/broadcast_actions.txt
As on date this is list according to official documentation
android#intent#action#AIRPLANE_MODE
android#intent#action#ALL_APPS
android#intent#action#ANSWER
android#intent#action#APPLICATION_PREFERENCES
android#intent#action#APP_ERROR
android#intent#action#ASSIST
android#intent#action#ATTACH_DATA
android#intent#action#BATTERY_CHANGED
android#intent#action#BATTERY_LOW
android#intent#action#BATTERY_OKAY
android#intent#action#BOOT_COMPLETED
android#intent#action#BUG_REPORT
android#intent#action#CALL
android#intent#action#CALL_BUTTON
android#intent#action#CARRIER_SETUP
android#intent#action#CLOSE_SYSTEM_DIALOGS
android#intent#action#CONFIGURATION_CHANGED
android#intent#action#CREATE_DOCUMENT
android#intent#action#DATE_CHANGED
android#intent#action#VIEW
android#intent#action#DEFINE
android#intent#action#DELETE
android#intent#action#DEVICE_STORAGE_LOW
android#intent#action#DEVICE_STORAGE_OK
android#intent#action#DIAL
android#intent#action#DOCK_EVENT
android#intent#action#DREAMING_STARTED
android#intent#action#EDIT
android#intent#action#EXTERNAL_APPLICATIONS_AVAILABLE
android#intent#action#EXTERNAL_APPLICATIONS_UNAVAILABLE
android#intent#action#FACTORY_TEST
android#intent#action#GET_CONTENT
android#intent#action#GET_RESTRICTION_ENTRIES
android#intent#action#GTALK_CONNECTED
android#intent#action#GTALK_DISCONNECTED
android#intent#action#HEADSET_PLUG
android#intent#action#INPUT_METHOD_CHANGED
android#intent#action#INSERT
android#intent#action#INSERT_OR_EDIT
android#intent#action#INSTALL_FAILURE
android#intent#action#INSTALL_PACKAGE
android#intent#action#LOCALE_CHANGED
android#intent#action#LOCKED_BOOT_COMPLETED
android#intent#action#MAIN
android#intent#action#MANAGED_PROFILE_ADDED
android#intent#action#MANAGED_PROFILE_AVAILABLE
android#intent#action#MANAGED_PROFILE_REMOVED
android#intent#action#MANAGED_PROFILE_UNAVAILABLE
android#intent#action#MANAGED_PROFILE_UNLOCKED
android#intent#action#MANAGE_NETWORK_USAGE
android#intent#action#MANAGE_PACKAGE_STORAGE
android#intent#action#MEDIA_BAD_REMOVAL
android#intent#action#MEDIA_BUTTON
android#intent#action#MEDIA_CHECKING
android#intent#action#MEDIA_EJECT
android#intent#action#MEDIA_MOUNTED
android#intent#action#MEDIA_NOFS
android#intent#action#MEDIA_REMOVED
android#intent#action#MEDIA_SCANNER_FINISHED
android#intent#action#MEDIA_SCANNER_SCAN_FILE
android#intent#action#MEDIA_SCANNER_STARTED
android#intent#action#MEDIA_SHARED
android#intent#action#MEDIA_UNMOUNTABLE
android#intent#action#MEDIA_UNMOUNTED
android#intent#action#MY_PACKAGE_REPLACED
android#intent#action#MY_PACKAGE_SUSPENDED
android#intent#action#MY_PACKAGE_UNSUSPENDED
android#intent#action#NEW_OUTGOING_CALL
android#intent#action#OPEN_DOCUMENT
android#intent#action#OPEN_DOCUMENT_TREE
android#intent#action#PACKAGES_SUSPENDED
android#intent#action#PACKAGES_UNSUSPENDED
android#intent#action#PACKAGE_ADDED
android#intent#action#PACKAGE_CHANGED
android#intent#action#PACKAGE_DATA_CLEARED
android#intent#action#PACKAGE_FIRST_LAUNCH
android#intent#action#PACKAGE_FULLY_REMOVED
android#intent#action#PACKAGE_INSTALL
android#intent#action#PACKAGE_NEEDS_VERIFICATION
android#intent#action#PACKAGE_REMOVED
android#intent#action#PACKAGE_REPLACED
android#intent#action#PACKAGE_RESTARTED
android#intent#action#PACKAGE_VERIFIED
android#intent#action#PASTE
android#intent#action#PICK
android#intent#action#PICK_ACTIVITY
android#intent#action#ACTION_POWER_CONNECTED
android#intent#action#ACTION_POWER_DISCONNECTED
android#intent#action#POWER_USAGE_SUMMARY
android#intent#action#PROCESS_TEXT
android#intent#action#PROVIDER_CHANGED
android#intent#action#QUICK_CLOCK
android#intent#action#QUICK_VIEW
android#intent#action#REBOOT
android#intent#action#RUN
android#intent#action#SCREEN_OFF
android#intent#action#SCREEN_ON
android#intent#action#SEARCH
android#intent#action#SEARCH_LONG_PRESS
android#intent#action#SEND
android#intent#action#SENDTO
android#intent#action#SEND_MULTIPLE
android#intent#action#SET_WALLPAPER
android#intent#action#SHOW_APP_INFO
android#intent#action#ACTION_SHUTDOWN
android#intent#action#SYNC
android#intent#action#SYSTEM_TUTORIAL
android#intent#action#TIMEZONE_CHANGED
android#intent#action#TIME_SET
android#intent#action#TIME_TICK
android#intent#action#TRANSLATE
android#intent#action#UID_REMOVED
android#intent#action#UMS_CONNECTED
android#intent#action#UMS_DISCONNECTED
android#intent#action#UNINSTALL_PACKAGE
android#intent#action#USER_BACKGROUND
android#intent#action#USER_FOREGROUND
android#intent#action#USER_INITIALIZE
android#intent#action#USER_PRESENT
android#intent#action#USER_UNLOCKED
android#intent#action#VIEW
android#intent#action#VIEW_LOCUS
android#intent#action#VIEW_PERMISSION_USAGE
android#intent#action#VOICE_COMMAND
android#intent#action#WALLPAPER_CHANGED
android#intent#action#WEB_SEARCH
android#intent#category#ALTERNATIVE
android#intent#category#APP_BROWSER
android#intent#category#APP_CALCULATOR
android#intent#category#APP_CALENDAR
android#intent#category#APP_CONTACTS
android#intent#category#APP_EMAIL
android#intent#category#APP_FILES
android#intent#category#APP_GALLERY
android#intent#category#APP_MAPS
android#intent#category#APP_MESSAGING
android#intent#category#APP_MUSIC
android#intent#category#BROWSABLE
android#intent#category#CAR_DOCK
android#intent#category#CAR_MODE
android#intent#category#DEFAULT
android#intent#category#DESK_DOCK
android#intent#category#DEVELOPMENT_PREFERENCE
android#intent#category#EMBED
android#intent#category#FRAMEWORK_INSTRUMENTATION_TEST
android#intent#category#HE_DESK_DOCK
android#intent#category#HOME
android#intent#category#INFO
android#intent#category#LAUNCHER
android#intent#category#LEANBACK_LAUNCHER
android#intent#category#LE_DESK_DOCK
android#intent#category#MONKEY
android#intent#category#OPENABLE
android#intent#category#PREFERENCE
android#intent#category#SAMPLE_CODE
android#intent#category#SECONDARY_HOME
android#intent#category#SELECTED_ALTERNATIVE
android#intent#category#TAB
android#intent#category#TEST
android#intent#category#TYPED_OPENABLE
android#intent#category#UNIT_TEST
android#intent#category#VOICE
android#intent#category#VR_HOME
android#intent#extra#ALARM_COUNT
android#intent#extra#ALLOW_MULTIPLE
android#intent#extra#ALLOW_REPLACE
android#intent#extra#ALTERNATE_INTENTS
android#intent#extra#ASSIST_CONTEXT
android#intent#extra#ASSIST_INPUT_DEVICE_ID
android#intent#extra#ASSIST_INPUT_HINT_KEYBOARD
android#intent#extra#ASSIST_PACKAGE
android#intent#extra#ASSIST_UID
android#intent#extra#AUTO_LAUNCH_SINGLE_CHOICE
android#intent#extra#BCC
android#intent#extra#BUG_REPORT
android#intent#extra#changed_component_name
android#intent#extra#changed_component_name_list
android#intent#extra#changed_package_list
android#intent#extra#changed_uid_list
android#intent#extra#CHOOSER_REFINEMENT_INTENT_SENDER
android#intent#extra#CHOOSER_TARGETS
android#intent#extra#CHOSEN_COMPONENT
android#intent#extra#CHOSEN_COMPONENT_INTENT_SENDER
android#intent#extra#COMPONENT_NAME
android#intent#extra#CONTENT_ANNOTATIONS
android#intent#extra#CONTENT_QUERY
android#intent#extra#DATA_REMOVED
android#intent#extra#DOCK_STATE
android#intent#extra#DONT_KILL_APP
android#intent#extra#DURATION_MILLIS
android#intent#extra#EMAIL
android#intent#extra#EXCLUDE_COMPONENTS
android#intent#extra#FROM_STORAGE
android#intent#extra#HTML_TEXT
android#intent#extra#INDEX
android#intent#extra#INITIAL_INTENTS
android#intent#extra#INSTALLER_PACKAGE_NAME
android#intent#extra#INTENT
android#intent#extra#KEY_EVENT
android#intent#extra#LOCAL_ONLY
android#intent#extra#LOCUS_ID
android#intent#extra#MIME_TYPES
android#intent#extra#NOT_UNKNOWN_SOURCE
android#intent#extra#ORIGINATING_URI
android#intent#extra#PACKAGE_NAME
android#intent#extra#PHONE_NUMBER
android#intent#extra#PROCESS_TEXT
android#intent#extra#PROCESS_TEXT_READONLY
android#intent#extra#QUICK_VIEW_FEATURES
android#intent#extra#QUIET_MODE
android#intent#extra#REFERRER
android#intent#extra#REFERRER_NAME
android#intent#extra#remote_intent_token
android#intent#extra#REPLACEMENT_EXTRAS
android#intent#extra#REPLACING
android#intent#extra#restrictions_bundle
android#intent#extra#restrictions_intent
android#intent#extra#restrictions_list
android#intent#extra#RESULT_RECEIVER
android#intent#extra#RETURN_RESULT
android#intent#extra#shortcut#ICON
android#intent#extra#shortcut#ICON_RESOURCE
android#intent#extra#shortcut#ID
android#intent#extra#shortcut#INTENT
android#intent#extra#shortcut#NAME
android#intent#extra#SHUTDOWN_USERSPACE_ONLY
android#intent#extra#SPLIT_NAME
android#intent#extra#STREAM
android#intent#extra#SUBJECT
android#intent#extra#SUSPENDED_PACKAGE_EXTRAS
android#intent#extra#TEMPLATE
android#intent#extra#TEXT
android#intent#extra#TITLE
android#intent#extra#UID
android#intent#extra#USER