【问题标题】:Android: How to get a list of all available intent filters?Android:如何获取所有可用意图过滤器的列表?
【发布时间】:2011-05-04 21:26:04
【问题描述】:

我搜索了 Android 文档,但出于某种疯狂的原因,我无法找到所有可用 Intent 过滤器的列表。

我正在寻找一个意图过滤器,它可以通过广播接收器通知我某个特定 Activity(例如浏览器或电子邮件)已启动或在前台。

谁能帮我解决这个问题?

【问题讨论】:

标签: android android-activity broadcastreceiver intentfilter


【解决方案1】:

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

回答您的问题:您创建要用于在程序寻找服务或活动时选择您的活动的意图过滤器。因此,包中的每个 Activity 都定义了自己的意图过滤器列表。

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

包资源管理器还会收集清单中的所有使用权限字段,并显示哪些应用需要哪些权限的列表。因此,您可以找到所有使用“SEND_SMS”或类似名称的包。单击包的名称会显示该包的解码(未压缩的二进制)AndroidManifest.xml。

【讨论】:

  • @techtonik 是的,显然是这样。这是每个应用程序的广播接收器部分,它对我来说很好。
【解决方案2】:

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

adb shell dumpsys 包 r

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

【讨论】:

  • 不幸的是,它转储了外部不可用的数组 PackageManagerService.mActivities。所以你不能通过 API 访问意图过滤器。
【解决方案3】:

扩展 Tom Fraser 的答案,最好的方法是使用 dumpsys 和 grep 和排序。

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

grep 表达式确保只捕获以...blahblah.SOME_INTENT: 格式的意图结尾的行。它可能无法涵盖所有​​内容,但这是一个好的开始。

【讨论】:

  • 在我的情况下(Linux)我不得不删除$ –可能是由于停产。
【解决方案4】:

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

【讨论】:

  • 我可以告诉您,您将无法确定大多数应用程序何时启动,并且您几乎肯定无法判断它们何时进入前台。当然,如果您出于特定目的需要此信息,欢迎您修改 android 固件。但否则这是一个安全问题。
  • 不幸的是,只有一小部分应用程序为其意图提供了文档...
【解决方案5】:

这篇文章很旧,但对于任何从安装在特定 android 上的应用程序中寻找清单信息的人来说,都可以使用这个 GOD 应用程序:

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

【讨论】:

  • ManifestViewer 现在在尝试查看意图时崩溃
  • 我确认这个应用程序现在可以运行(以及我的手机),我现在可以看到完整的清单。 ...现在只需要学习如何使用 Tasker 中的 标签来自动化我的应用程序 :)
【解决方案6】:

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

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

【讨论】:

    【解决方案7】:

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

    【讨论】:

      【解决方案8】:

      (部分回答)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 来简化此操作。

      【讨论】:

      • 我刚试了一下,AndroidManifest.xml 不知何故被编译了。我可以读取一些字符串,但其余的只是字节码。
      【解决方案9】:

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

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

      【讨论】:

      • 对不起,标准类别在 categories.txt
      • 您或许可以编辑自己的帖子并提供指向您找到该帖子的链接?
      【解决方案10】:

      截至日期,这是根据官方文档列出的列表

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 2019-01-09
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多