从BroadcastReceiver处理App小部件的update()方法

时间:2012-01-04 08:32:25

标签: android service broadcastreceiver

我从App Widget Article做了一个示例,我使用Service来更新App小部件。

现在我想以自定义间隔(运行时间间隔)以编程方式更新App Widget。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

以下是如何为AppWidget设置创建更新事件的示例。您可以根据自己的需要对其进行自定义:

Intent intent = new Intent();
intent.setAction(ExampleAppWidgetProvider.MY_INTENT_ACTION);
Uri data = Uri.withAppendedPath (Uri.parse("wordwidget://wordwidget/widgetId/#"),
                String.valueOf(mAppWidgetId));
intent.setData(data);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);

PendingIntent pendingIntent = PendingIntent.getBroadcast(
ExampleAppWidgetConfigure.this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 10000, 10*1000, pendingIntent);

您还应该为您的BR制作一个额外的意图过滤器,它将通过操作名称接收意图:ExampleAppWidgetProvider.MY_INTENT_ACTION

<强>更新 对于您的广播接收器,您应该添加新的intent-filter,如下所示:

<intent-filter>
    <action android:name="org.android.testwidget.MY_APPWIDGET_UPDATE" />
    <data android:scheme="wordwidget" />
</intent-filter>

然后创建一个将由定义的intent-filter接收的Intent。就我而言,public static final String MY_INTENT_ACTION = "org.android.testwidget.MY_APPWIDGET_UPDATE"; 需要Intent的数据部分为每个AppWidget实例创建单独的intent(因为我想在不同的时间更新每个实例)。之后,您将为BR创建待处理意图,并使用此PI创建alarmManager。在方法setRepeating中,您可以定义AppWidget实例的开始时间和间隔。