Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取服务中应用程序的widgetID和ComponentName_Android_Android Widget_Android Service_Android Broadcast_Appwidgetprovider - Fatal编程技术网

Android 如何获取服务中应用程序的widgetID和ComponentName

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

我正在从服务更新小部件(srvice和widget类在两个不同的包中),如下所示

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
的小部件。因此,更新小部件的目的在于您的小部件实例。