ある時間間隔でアラームを設定する必要があります。それを達成するために私が書いた:Androidでアラームマネージャーが動作しない
TestFragmentクラス
private void setupAlarmManager(){
AlarmManager manager = manager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(getContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), i, alarmIntent, PendingIntent.FLAG_ONE_SHOT);
manager.set(AlarmManager.RTC_WAKEUP,1499510100000L, pendingIntent);
manager.set(AlarmManager.RTC_WAKEUP,1499510220000L, pendingIntent);
}
AlarmReceiverクラス
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
}
}
を私はToast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
でデバッグポイントを置くが、何も起こりませんでした。
午後4 = 1499510100000L
16:03 = 1499510220000L
私はここで間違って何をしているのだろうか?さらにonReceive
メソッドにローカル通知を追加したいと思います。
'4PM = 1499510100000L 4:03 PM = 1499510220000L' **間違った**。これらの値は、アラームマネージャが実行されてから待機する予定の*ミリ秒*です。 **時間価値ではありません**。ちなみに、1499510100000は約47年半に相当します。あなたはおそらく、あなたの警報が発射されるかどうかを確認するためにこのような長い時間を待つことを望んでいない...;) –
1499510100000Lはどこから来ますか?代わりにカレンダーを使用してください。 –
@Rotwang @Mehranこの値は間違っている可能性があります。私はそれをチェックしますが、これらの値は 'Java.Util'タイムライブラリを使ってミリ秒単位で時間を格納するデータベースから来ています。ここで 'Calendar'ではなく' new Date()。getTime() 'を使うことはできませんか? –