无法使用 AlarmManager 和日历更新 Android 小部件

Cannot update Android Widget using AlarmManager and Calendar

我想更新我的小部件,但它根本不起作用!我这样做是为了让更新在特定时间发生——在我 运行 应用程序几分钟后,但小部件没有得到更新。我知道这一点,因为我正在使用 System.currentTimeMillis 设置标签。当应用程序更新时,此标签应具有新值。我按照 Android AlarmManager 文档告诉我的那样做了所有事情。

views.setTextViewText(R.id.todayDate,System.currentTimeMillis()+"");

所以这是我在

的 onReceive 和 onUpdate 中所做的
public class CalendarWidget extends AppWidgetProvider 

更多代码

Calendar todayMidnight = Calendar.getInstance();
todayMidnight.setTimeInMillis(System.currentTimeMillis());
todayMidnight.add(Calendar.DATE, 0);
todayMidnight.set(Calendar.HOUR_OF_DAY, 23);
todayMidnight.set(Calendar.MINUTE, 2);
todayMidnight.set(Calendar.SECOND, 0);

AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent (context, CalendarWidget.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);

alarm.setRepeating(AlarmManager.RTC, todayMidnight.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

...

 views.setTextViewText(R.id.todayDate,System.currentTimeMillis()+"");

在清单中

<receiver
            android:name="com.standardSPenPlannerInhoHwang.CalendarWidget"
            android:theme="@android:style/Theme.Translucent" 
            android:process=":remote"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
                <action android:name="android.intent.action.TIME_SET" />
                <action android:name="android.intent.action.DATE_CHANGED" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@layout/calendar_widget2" />
        </receiver>

但是应用程序在 11:02PM 没有更新!!这应该有效,对吧? (请注意,我从我的活动中更新小部件工作正常。只是警报管理器不更新小部件!)

CalendarWidget 是您的接收器吗class?
你需要一个接收器 class
public class AlarmReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { //Alarm received,update your widget } }

在你的 activity:
Intent alarmIntent=new Intent(yourActivity.this,AlarmReceiver.class); PendingIntent pi=PendingIntent.getActivity(context,ID,intent,0); AlarmManager manager =(AlarmManager)getSystemService(Context.ALARM_SERVICE); manager.set(AlarmManager.RTC, ... ,pendingIntent);