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

时间:2012-11-23 18:51:10

标签: android widget appwidgetprovider

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

我发现了许多关于在Intent领域发送appWidgetId的帖子,但我无法理解在发送之前我必须得到它。

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

1 个答案:

答案 0 :(得分:0)

尝试onUpdate

    int a = appWidgetIds.length; 

如果返回1,则:

    int yourAppWidgetId = appWidgetIds[0];

应该返回你的appWidgetId。

修改

没有看到任何代码很难给你正确的答案,但我会给你一个例子。如果为小部件创建了RemoteView,则必须为每个RemoteView创建一个intent。在此意图中,您可以设置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");

然后创建一个PendingIntent,您可以将其设置为remoteViews:

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

    remoteViews.setOnClickPendingIntent(R.id.your_widget_button_id_in_xml,
                pendingIntent);

如果用户按下了小部件,您可以使用

在onReceive()中获取id
    String a = intent.getStringExtra("ID");

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

http://www.android10.org/index.php/articlesgeneralprogramming/315-app-widgets-tutorial

updateService有一个很好的例子。