Android 如何获取服务中应用程序的widgetID和ComponentName
我正在从服务更新小部件(srvice和widget类在两个不同的包中),如下所示Android 如何获取服务中应用程序的widgetID和ComponentName,android,android-widget,android-service,android-broadcast,appwidgetprovider,Android,Android Widget,Android Service,Android Broadcast,Appwidgetprovider,我正在从服务更新小部件(srvice和widget类在两个不同的包中),如下所示 AppWidgetManager widgetManager = AppWidgetManager.getInstance(this); ComponentName widgetComponent = new ComponentName(this,MyWidgetProvider.class); int[] widgetIds = widgetManager.getAppWidgetIds(widgetCompon
AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widgetComponent = new ComponentName(this,MyWidgetProvider.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
Intent update = new Intent();
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
sendBroadcast(update);
它会更新我的小部件,但问题是它也会更新设备的其他小部件,因为我的小部件会在所有小部件更新后更新
因此,现在我只想更新我的小部件,我如何才能做到这一点呢?根据Android文档
getAppWidgetIds
返回一个id列表,该列表已绑定到特定的WidgetProvider
,即所有的小部件实例id,而不是其他WidgetProvider
下的小部件id,那么解决方案是什么呢,当您调用getAppWidgetIds
时,只返回与您的小部件相对应的id,而不返回其他WidgetProvider
的小部件。因此,更新小部件的目的在于您的小部件实例。