【发布时间】:2011-05-04 21:26:04
【问题描述】:
我搜索了 Android 文档,但出于某种疯狂的原因,我无法找到所有可用 Intent 过滤器的列表。
我正在寻找一个意图过滤器,它可以通过广播接收器通知我某个特定 Activity(例如浏览器或电子邮件)已启动或在前台。
谁能帮我解决这个问题?
【问题讨论】:
标签: android android-activity broadcastreceiver intentfilter
我搜索了 Android 文档,但出于某种疯狂的原因,我无法找到所有可用 Intent 过滤器的列表。
我正在寻找一个意图过滤器,它可以通过广播接收器通知我某个特定 Activity(例如浏览器或电子邮件)已启动或在前台。
谁能帮我解决这个问题?
【问题讨论】:
标签: android android-activity broadcastreceiver intentfilter
PackageExplorer 列出了您设备中应用程序中定义的所有意图过滤器
回答您的问题:您创建要用于在程序寻找服务或活动时选择您的活动的意图过滤器。因此,包中的每个 Activity 都定义了自己的意图过滤器列表。
我发现拥有一个由设备上的所有应用程序定义的所有意图过滤器的列表很有用——这样可以知道在处理意图时系统会调用哪些应用程序。我在 Android Market 上放了一个免费应用程序,搜索“包资源管理器”,搜索它可以在您的设备上找到的所有应用程序,解码 AndroidManifest.xml 文件并显示所有应用程序定义的所有意图过滤器的列表。所有意图过滤器的表格可以按操作、类别、数据字段(即方案或 mimetype)、包名称或意图过滤器类型进行排序,因此您可以在设备上找到响应各种操作或类别的所有活动。
包资源管理器还会收集清单中的所有使用权限字段,并显示哪些应用需要哪些权限的列表。因此,您可以找到所有使用“SEND_SMS”或类似名称的包。单击包的名称会显示该包的解码(未压缩的二进制)AndroidManifest.xml。
【讨论】:
如果您不在设备上,您可以运行以下命令:
adb shell dumpsys 包 r
这将为您提供所有静态注册的意图过滤器的列表。
【讨论】:
扩展 Tom Fraser 的答案,最好的方法是使用 dumpsys 和 grep 和排序。
dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort
grep 表达式确保只捕获以...blahblah.SOME_INTENT: 格式的意图结尾的行。它可能无法涵盖所有内容,但这是一个好的开始。
【讨论】:
$ –可能是由于停产。
你不会发现的。意图过滤器由应用程序定义。您必须查看您感兴趣的特定应用程序的文档。
【讨论】:
这篇文章很旧,但对于任何从安装在特定 android 上的应用程序中寻找清单信息的人来说,都可以使用这个 GOD 应用程序:
https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
【讨论】:
有 GET_INTENTS_FILTER - 声明将来用于查询意图过滤器,另见http://code.google.com/p/android/issues/detail?id=3217
但是,Android 团队的优先级很小。有人要提交补丁吗?
【讨论】:
http://www.openintents.org/en/ 有一个“数据库”,它试图收集已知的意图过滤器。 Intent 的文档也列出了一些。
【讨论】:
(部分回答)IntentFilter 是在应用程序的 .apk 文件中包含的 AndroidManifest.xml 文件中定义的。 (在 -> -> -> XML 元素中,如下所示:
我还没有找到用于搜索设备上存储的所有 .apk 文件中定义的所有 Intent 的 API。系统搜索所有intent的列表:android.content.Context.startActivity(Intent intent) 它调用 android.app.ActivityManagerNative.startActivity() 中的本机方法,该方法使用进程间通信 (IPC) 机制(使用“Parcel”对象中的信息序列化)来搜索意图并启动 Activity。所以我可以找到它是如何完成的。
您似乎可以获得对 .apk 文件的读取权限(许多文件存储在 /system/app/*.apk 中)。 .apk 文件是一个 .jar 文件,其中提供了 AndroidManifest.xml 文件,因此程序应该能够读取和解析清单并找到 IntentFilters——但应该有 API 来简化此操作。
【讨论】:
您可以在sdk/platforms/android-x/data/broadcast_actions.txt
中查看标准操作和类别列表【讨论】:
categories.txt
截至日期,这是根据官方文档列出的列表
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
【讨论】: