0

我被一些事情困住了,我想,这是非常微不足道的。基本上我会在未来的某个特定时刻安排警报:

Intent contentIntent = new Intent(this, AlarmReceiver.class); 
PendingIntent theappIntent = PendingIntent.getService(Main.this, 0,contentIntent, 0); 
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day, hour,minute); 
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), theappIntent); 

在手机不断开启时工作正常。我的问题是手机重启后警报没有触发,并且在预期的时间打开。有什么我错过的吗?我应该做一些额外的工作以在重启后保持闹钟的安排吗?

4

2 回答 2

3

您必须在设备启动时重置警报。当设备启动并重置警报时,您无法检测到应用程序。所以下面是清单中编写的代码

<receiver android:name=".YourReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
</receiver>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

还要创建一个 BroadcastReceiver 来接收启动完成的意图

 public class YourReceiver extends BroadcastReceiver {


 Context ct;

 @Override
 public void onReceive(Context context, Intent intent) 
 {
    ct=context;
    if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
    {
      // Reset your alarm here
      Intent contentIntent = new Intent(ct, AlarmReceiver.class); 
      PendingIntent theappIntent = PendingIntent.getService(ct, 0,contentIntent, 0); 
      Calendar calendar = Calendar.getInstance();
      calendar.set(year, month, day, hour,minute); 
      AlarmManager am = (AlarmManager) ct.getSystemService(ALARM_SERVICE);
      am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), theappIntent); 
    }
 }
于 2011-11-18T07:12:22.813 回答
0

你应该添加一个接收器来监听 android.intent.action.BOOT_COMPLETED 并从那里开始你的闹钟。

于 2011-11-18T07:08:34.013 回答