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

Android 7(API25)跨应用发送APPWIDGET_UPDATE广播权限问题求助

解决Android 7.0+发送APPWIDGET_UPDATE广播被禁止的问题

这个问题我太熟了!Android 7.0(API 24及以上)引入了后台执行限制,其中就包括对大部分隐式广播的拦截,你遇到的报错就是因为这个规则导致的。API 19没有这个限制,所以之前能正常运行,到API 25就触发了系统的安全拦截。

先纠正你一个小错误:你之前在<activity>标签里加APPWIDGET_UPDATE的intent-filter是没用的,Widget的广播接收器应该注册为<receiver>组件,不是Activity。下面是具体的解决方案:

1. 改用显式广播发送(核心解决方法)

Android 7.0+允许发送显式广播(明确指定目标组件的广播),所以你需要修改发送广播的代码,直接指定Widget Provider的组件信息,而不是用隐式Intent。

示例代码如下:

// 1. 创建更新广播的Intent
Intent updateIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);

// 2. 指定目标Widget的组件名(替换成你的Widget类全路径和目标包名)
ComponentName widgetComponent = new ComponentName(
    "com.app.package.balance",  // 目标Widget所在的包名
    "com.app.package.balance.YourWidgetProviderClass"  // 你的WidgetProvider类的全路径
);
updateIntent.setComponent(widgetComponent);

// 3. (可选)如果需要更新特定的Widget实例,添加Widget ID数组
int[] targetWidgetIds = AppWidgetManager.getInstance(context)
    .getAppWidgetIds(widgetComponent);
updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, targetWidgetIds);

// 4. 发送广播
context.sendBroadcast(updateIntent);

2. 确保Manifest中Widget的正确注册

把你之前加在Activity里的intent-filter移到Widget的<receiver>标签下,这才是正确的Widget注册方式:

<application
    ...>

    <!-- 正确的Widget Provider注册 -->
    <receiver android:name="com.app.package.balance.YourWidgetProviderClass">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        </intent-filter>
        <!-- 关联Widget的配置信息XML,替换成你的文件路径 -->
        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/your_widget_config_info"/>
    </receiver>

    <!-- 你的其他Activity等组件... -->
</application>

为什么之前的方法没用?

  • Android 7.0+禁止发送未指定目标组件的隐式广播,APPWIDGET_UPDATE属于被限制的范畴;
  • 你错误地在Activity中配置了intent-filter,但Widget的广播接收器是receiver组件,Activity无法接收这个广播,所以配置无效。

按照上面的步骤修改后,跨应用发送Widget更新广播就能在API 25及以上正常运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:59:45