我有一个应用程序小部件,我正在尝试从活动中更新它。
为此,我需要 appwidget id。
我用过AppWidgetManager.getAppWidgetIds
但它总是返回一个空列表。
我也用过AppWidgetManager.getInstalledProviders
以确保我的ComponentName
是正确的,但我仍然得到一个空列表。
我已经看到了与此相关的所有其他问题,但我找不到对我有用的东西。
还有其他方法可以解决这个问题吗?或者另一种更新小部件的方法?
My code:
ComponentName name = new ComponentName(packageName, boardcastReceiverClass);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
int[] ids = appWidgetManager.getAppWidgetIds(name);
if (ids != null && ids.length > 0) {
getApplicationContext().sendBroadcast(getUpdateIntent(ids[0]));
}
Thanks.
UPDATE:我应该提到我的 AppWidgetProvider 在一个库项目中。根据我得到的 ComponentNamegetInstalledProviders
,我使用了我的应用程序的包名称和类名称以及库的包名称。
您可以在不知道 id 的情况下访问您的小部件
appWidgetManager.updateAppWidget(new ComponentName(this.getPackageName(),Widget.class.getName()), views);
这使您无需知道“appWidgetID”即可访问小部件。然后在活动中:
Intent intent = new Intent(this, Settings.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
views.setOnClickPendingIntent(R.id.btnActivate, pendingIntent);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
appWidgetManager.updateAppWidget(new ComponentName(this.getPackageName(), Widget.class.getName()), views);
finish();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)