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 に答える