Android 如何向特定的appwidget广播意图?
我正在创建一个Android 如何向特定的appwidget广播意图?,android,android-widget,android-intent,Android,Android Widget,Android Intent,我正在创建一个appwidget,它需要在特定的时间间隔内更新。为此,我使用了AlarmManager 我想让报警运行AppWidgetProvider中的onUpdate()方法 //Create the intent Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); pendingIntent = PendingIntent.getBroadcast(context, 0, in
appwidget
,它需要在特定的时间间隔内更新。为此,我使用了AlarmManager
我想让报警运行AppWidgetProvider
中的onUpdate()
方法
//Create the intent
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
//Schedule the alarm
AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
manager.setRepeating(AlarmManager.RTC, startAlarmCal.getTime().getTime(), 1000 * 60, pendingIntent);
然而,这个意图会导致所有小部件的更新。我只想以某种方式将此意图发送到我自己的appwidget。我该怎么做呢?再一次:
updatePeriodMillis此AppWidget希望更新的频率(以毫秒为单位)
使用自定义意图发送到您的小部件。您可以在manifest.xml中注册它们。如果有许多不同的小部件,则不能更新指定的小部件ID,而是更新小部件的类型
<receiver
android:name=".widget.WidgetProvider"
android:label="1x1">
<service
android:name=".extra.WidgetProvider$WidgetUpdateService1x1" />
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="nitro.blub.APPWIDGET_MANUEL_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
您可以尝试添加以下内容(当然,为了满足您的需要,会稍微修改):
希望这有帮助。??你在回答另一个问题吗?我需要使用一个闹钟,因为我需要一个特定的updatepattern。因此,我需要提交一个broadcastintent,但这个intent也会触发所有其他小部件。AppWidgetProviderInfo的updatePeriodMillis将为您提供一个特定的更新模式,这就是它的用途!根据文档:此AppWidget希望更新的频率(以毫秒为单位)。是的,但不能低于30分钟一次,您可以指定确切的时间。不管怎样,我知道我在做什么,而你在这方面并没有真正的帮助。如果你想得到有用的答案,你需要在你的问题上精确。
// Change the text in the widget
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.main);
ComponentName thisWidget = new ComponentName(context, [Calling_class].class);
// Run update code here. e.g: //////////////
updateViews.setTextViewText(R.id.text, now);
////////////////////////////////////////////
appWidgetManager.updateAppWidget(thisWidget, updateViews);