2017-11-20 14 views
0

毎日午後10時にアンドロイドアプリケーションでアラームマネージャーを起動したいと思います。上記のLolipopバージョンで動作していますが、KitKatバージョンでは動作していません。 Androidマネージャーで動作していないアラームマネージャー

public static void startAlarmManagerOutTime(Context context) { 

    Calendar currentCal = Calendar.getInstance(); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, 22); 
    calendar.set(Calendar.MINUTE,00); 

    long intendedTime = calendar.getTimeInMillis(); 
    long currentTime = currentCal.getTimeInMillis(); 



    alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent gpsTrackerIntent = new Intent(context1, AlarmReceiver.class); 

    PendingIntent pendingOutTimeIntent = PendingIntent.getBroadcast(context, 2, gpsTrackerIntent, 0); 

    if(intendedTime >= currentTime){ 
     // you can add buffer time too here to ignore some small differences in milliseconds 
     // set from today 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, intendedTime, AlarmManager.INTERVAL_DAY, pendingOutTimeIntent); 

    } else{ 
     // set from next day 
     // you might consider using calendar.add() for adding one day to the current day 
     calendar.add(Calendar.DAY_OF_MONTH, 1); 
     intendedTime = calendar.getTimeInMillis(); 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, intendedTime, AlarmManager.INTERVAL_DAY, pendingOutTimeIntent); 
    } 

} 

この

は私が私のマニフェストにこれらの値を入れている受信機

public class AlarmReceiver extends WakefulBroadcastReceiver { 

@Override 
    public void onReceive(Context context, Intent intent) { 

    Toast.makeText(context,"AlarmReceiver",Toast.LENGTH_SHORT).show(); 

    } 
} 

を放送している:

<receiver android:name=".com.test.Receiver.AlarmReceiver"> 
    </receiver> 

答えて

0

限り19の繰り返しアラームLVL APIが不正確であるため、私が知っているよう。これは、特定の時間に設定すると、その日の近くの別の時間にトリガーすることができます。これはリソースを節約するために追加されました。アラームが設定されている場合 は私がお勧めするのadbコマンドを使用することで、チェックするには:あなたは、LinuxやMacを使用している場合

adbのシェルdumpsysアラーム

を、あなたを検索すること後にはgrepを追加することができますアプリパッケージ名。ミリ秒単位で表示される時刻なので、その数値を日付に変換する必要があります。

私はWakefulBroadcastReceiverを使用していますが、許可を宣言しましたか?WAKE_LOCK