gpt4 book ai didi

android - 如何向多个 WidgetProvider 广播 Intent

转载 作者:行者123 更新时间:2023-11-30 00:02:26 28 4
gpt4 key购买 nike

我有 2 个小部件,每个小部件都有自己的 WidgetProvider。这是类层次结构:

      AppWidgetProvider
|
CommonWidgetProvider
| |
WidgetAProvider WidgetBProvider

两个小部件都有一个更新小部件的按钮,但无论您单击哪个小部件,我都想更新所有小部件(WidgetA 和 WidgetB)。

我像这样广播更新 Intent (在 WidgetA 中):

不要担心 EXTRA_APPWIDGET_IDS 只包含当前小部件的 ID - 我稍后会在 Provider 中检索所有小部件的 ID

// setup click on update icon
Intent intent = new Intent(data.context, WidgetAProvider.class); // how can I broadcast to both A AND B? Now it will broadcast only to A.
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {data.widgetId});

PendingIntent pendingIntent = PendingIntent.getBroadcast(data.context,
data.widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.widgetUpdateContainer, pendingIntent);

如何向两个 WidgetProvider 广播此更新?

最佳答案

不要使用 PendingIntent直接发送广播,因为这样你总是必须明确定位 AppWidgetProvider 之一

相反,使用 PendingIntent开始 IntentService向每个 BroadcastReceiver 发送广播它使用某个 IntentFilter .可以禁止第三方BroadcastReceiver s 通过使用签名权限接收您的广播(参见示例 this post )

关于android - 如何向多个 WidgetProvider 广播 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673073/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com