Android - 如何获取所有可用意图过滤器的列表?

时间:2010-11-04 05:26:14

标签: android android-activity broadcastreceiver intentfilter

我搜索了Android文档,但由于一些疯狂的原因,我无法找到所有可用的意图过滤器列表。

我找到了一个意图过滤器,它会做类似的事情,通过广播接收器通知我特定的活动(示例浏览器或电子邮件)已经启动或在前台。任何人都可以帮助我。

11 个答案:

答案 0 :(得分:35)

PackageExplorer列出了设备中应用中定义的所有意图过滤器

回答您的问题:您创建了想要用于在程序查找服务或活动时选择活动的intent-filter。因此,包中的每个活动都定义了自己的intent-filters列表。

我发现拥有设备上所有应用程序定义的所有intent-filters列表很有用 - 因此会知道系统在处理intent时会调用哪些应用程序。我在Android Market上放了一个免费的应用程序,搜索“Package Explorer”,搜索它可以在你的设备上找到的所有应用程序,解码AndroidManifest.xml文件并显示所有应用程序定义的所有intent-filters的列表。所有意图过滤器的表可以按操作,类别,数据字段(即方案或mimetype),包名称或意图过滤器类型进行排序,这样您就可以在设备上找到响应各种操作或类别的所有活动。

Package Explorer还会收集清单中的所有uses-permissions字段,并显示哪些应用需要哪些权限。因此,您可以找到所有使用“SEND_SMS”或类似内容的软件包。单击包名称将显示包的已解码(未压缩二进制)AndroidManifest.xml。

答案 1 :(得分:13)

如果您不在设备上,则可以运行以下命令:

  

adb shell dumpsys package r

这将为您提供所有静态注册的意图过滤器的列表。

答案 2 :(得分:5)

你不会发现那个。意图过滤器由应用程序定义。您必须查看您感兴趣的paritcular应用程序的文档。

答案 3 :(得分:4)

http://www.openintents.org/en/处有一个“数据库”,试图收集已知的意图过滤器。此外,Intent的doumentation列出了一些。

答案 4 :(得分:4)

这篇文章很老但是对于那些从安装在特定android dwld上的应用程序寻找清单信息的人来说这个GOD应用程序:

https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer

答案 5 :(得分:3)

(部分答案)IntentFilters在应用程序的.apk文件中包含的AndroidManifest.xml文件中定义。 (在 - > - > - > XML元素中,如下所示:                                                            

我还没找到用于搜索存储在设备上的所有.apk文件中定义的所有Intent的API。系统搜索所有意图的列表:android.content.Context.startActivity(Intent intent) 在android.app.ActivityManagerNative.startActivity()中调用本机方法,该方法使用进程间通信(IPC)机制(使用' Parcel'对象中的通知序列化)来搜索意图并启动活动。所以我可以找到它是如何完成的。

您似乎可以获得对.apk文件的读取权限(许多文件存储在/system/app/*.apk中)。 .apk文件是.jar文件,并且AndroidManifest.xml文件可用,因此程序应该能够读取和解析清单并找到IntentFilters - 但是应该有API来简化这一过程。

答案 6 :(得分:3)

GET_INTENTS_FILTER - 声明将来用于查询意图过滤器,另请参阅http://code.google.com/p/android/issues/detail?id=3217

然而,Android团队的优先级很小。有人要提交补丁吗?

答案 7 :(得分:3)

您可以在 sdk / platforms / android-x / data / broadcast_actions.txt

中查看标准操作和类别列表

答案 8 :(得分:3)

扩展Tom Fraser的答案,最好的方法是使用带有grep和sort的 dumpsys

dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort

grep表达式确保只捕获以...blahblah.SOME_INTENT:格式为目标的行。它可能无法捕捉到所有,但它是一个良好的开端。

答案 9 :(得分:0)

根据官方文档,这是截止日期

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

答案 10 :(得分:0)

不知道我参加聚会有多晚,但在下面参加聚会是个好方法

adb shell
dumpsys package r | grep <packagename>

更改套餐名称