You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14中带Data URI的隐式广播无法被Manifest接收器接收的解决方法

解决Android 14接收器无法接收带Data URI的隐式广播问题

问题核心原因

android.intent.action.VIEW是Activity组件的标准Action,并非广播接收器的通用隐式匹配Action。当你用am broadcast发送隐式广播时,系统会根据广播的Action匹配接收器的IntentFilter,但你的接收器仅声明了VIEW Action,且默认广播命令未指定对应Action,导致匹配失败。再加上Android 14对隐式广播的匹配逻辑有更严格的校验,进一步导致接收器无法触发。

修改方案

1. 更新Manifest中的接收器注册

给接收器的IntentFilter添加一个自定义广播Action,同时保留原有Data配置,这样既能匹配自定义广播,又能过滤指定的Data URI:

<receiver android:name="a.b.c.MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <!-- 添加自定义广播Action -->
        <action android:name="com.my.package.ACTION_MY_CUSTOM_BROADCAST"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="myscheme"
              android:host="myhost"/>
    </intent-filter>
</receiver>

2. 修改adb广播命令

发送广播时需指定对应的自定义Action,同时携带Data URI:

adb shell am broadcast -a "com.my.package.ACTION_MY_CUSTOM_BROADCAST" -d "myscheme://myhost" --es mykey "myvalue"

补充说明

  • Android 14限制了大部分系统隐式广播的接收,自定义隐式广播必须明确指定匹配的Action,无法仅通过Data URI触发接收器。
  • 若你确实需要通过VIEW Action触发广播(不推荐,因为VIEW是为Activity设计的),可在发送广播时显式指定VIEW Action:
    adb shell am broadcast -a "android.intent.action.VIEW" -d "myscheme://myhost" --es mykey "myvalue"
    
    但这种方式不符合Android组件的设计规范,建议优先使用自定义广播Action的方案。

内容的提问来源于stack exchange,提问作者Jade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:12:37