でアンドロイドに私はBroadcastReceiverとAlaramManagerを使用して、指定した時刻にアラームを設定し、(日中)指定した時刻に通知を実装します。はどのようにAlaramMangerとBroadCastReceiver
指定された時間を警告しました。私はアプリを実行した後、それは私が設定した時間ではないにもかかわらず、再びアラーム。
つまり、アラームを午後9時21分に設定し、午後9時21分以降にアプリを実行すると、通知が生成されます。
設定した特定の時刻にアラーム通知を行い、アプリが実行されないようにしたいだけです。 また、私はアプリを実行すると、それはアラームしません。
どうすれば修正できますか?
これは私BroadcastReceiverコードです -
public class BroadcastD extends BroadcastReceiver{
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
showNotification();
}
public void showNotification() {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent pendingIntent = PendingIntent
.getActivity(context, 0, new Intent(context, MainActivity.class),
PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(android.R.drawable.ic_dialog_alert)
.setTicker("Ticket")
.setContentTitle("Title")
.setContentText("Context")
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
notificationManager.notify(1, builder.build());
}
}
これは私のMainActivityコードです:
public class MainActivity extends AppCompatActivity {
AlarmManager am ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
AlarmHATT alarmHATT = new AlarmHATT(getApplicationContext());
alarmHATT.Alarm();
}
public class AlarmHATT {
private Context context;
public AlarmHATT(Context context) {
this.context = context;
}
public void Alarm() {
Intent intent = new Intent(context.getApplicationContext(), BroadcastD.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DATE), 21, 21, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, sender);
}
}
これは、過去の時刻を設定するとalarmManagerが起動する通常の動作です。正しい時間を設定するだけでは避けることはできません。 – Opiatefuchs
私はアラームを避けることができる他の方法は何ですか?あなたが知っているなら、教えてください。ありがとうございました。 –
ちょうど過去の時間を設定していません。問題は、なぜあなたは過去から時間を設定したいのですか?これは理にかなっていません。通過したイベントの通知を受ける必要はありません。 – Opiatefuchs