仅适用于当前小部件的android小部件id

仅适用于当前小部件的android小部件id,android,widget,appwidgetprovider,Android,Widget,Appwidgetprovider,我可以在AppWidgetProvider的onUpdate()方法中获取当前的widgetId吗 我在《意向书》中找到了很多关于发送appWidgetId的帖子,但我不明白在发送之前应该从哪里获得它 我没有找到只获取当前小部件Id而不进行配置活动的方法。请尝试onUpdate int a = appWidgetIds.length; 如果返回1,则: int yourAppWidgetId = appWidgetIds[0]; 应返回您的appWidgetId 编辑 没有

我可以在
AppWidgetProvider
onUpdate()方法中获取当前的widgetId吗

我在《意向书》中找到了很多关于发送appWidgetId的帖子,但我不明白在发送之前应该从哪里获得它

我没有找到只获取当前小部件Id而不进行配置活动的方法。

请尝试onUpdate

    int a = appWidgetIds.length; 
如果返回1,则:

    int yourAppWidgetId = appWidgetIds[0];
应返回您的appWidgetId

编辑 没有看到任何代码,很难给你正确的答案,但我会给你一个例子。如果您为小部件创建了RemoteView,则必须为每个RemoteView创建一个意图。出于此目的,您可以设置一个ID,例如:

    RemoteViews remoteViews = new RemoteViews(getApplicationContext()
                .getPackageName(), 
                    layout.your_widget_layout);

        Intent intent1 = new Intent(getApplicationContext(),
                YourAppWidgetProvider.class);

    intent1.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent1.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,widgetIds);
        intent1.putExtra("ID", "one");
然后创建一个PendingEvent,您可以将其设置为RemoteView:

    PendingIntent pendingIntent = PendingIntent.getBroadcast(
                getApplicationContext(), 1, intent1,
                PendingIntent.FLAG_ONE_SHOT);

    remoteViews.setOnClickPendingIntent(R.id.your_widget_button_id_in_xml,
                pendingIntent);
如果用户按下小部件,您可以使用

但这只是一个不完整的例子,还有很多事情要做。如果您阅读本教程,我认为这是一个好方法:


updateService就是一个很好的例子。

如果我准备好添加一个小部件,并尝试添加另一个,我的配置活动将启动,它将生成意图。我的所有小部件都接收到该意图,我无法确定配置了哪个小部件,因为由活动发送的意图包含app_widget_id,但我没有每个小部件中用于比较的小部件id的信息
    String a = intent.getStringExtra("ID");