alarmmanagerとサービスを使用してアプリケーションを開発しており、通知をキャンセルできないことがあります。私は断片を使用しています。通知をクリックしてもAlarmmanagerがキャンセルされない
私のアプリは「x」分ごとに2つの通知を送信します。サービスを開始するボタンと停止するボタンがあります。私がサービスを開始すると通知が出され、停止ボタンを押すと正しく通知されます。しかし、サービスを開始してアプリを終了すると、通知は正常に開始されますが、通知をクリックすると、アプリが開いてから停止ボタンが押されますが、通知は一度も停止しません。
私がalarmanager.cancel(pendingintent)と呼ぶ関数は、同じフラグメントにあります(最初のフラグメントであるMainFragment.class)。 BroadcastReceiver
NotificationCompat.Builder mBuilder2 = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.icon2)
.setContentTitle("..")
.setContentText("..");
Intent resultIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(1, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder2.setContentIntent(resultPendingIntent);
mBuilder2.setAutoCancel(true);
mBuilder2.build().flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONGOING_EVENT;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder2.build());
おかげで、よろしく拡張BroadcastReceiver
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.icon)
.setContentTitle("...")
.setContentText("...");
Intent resultIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
mBuilder.setAutoCancel(true);
mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONGOING_EVENT;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
TimeAlarm2.class拡張
MainFragment.class
intent = new Intent(getContext(), TimeAlarm.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
intent.setAction(Long.toString(System.currentTimeMillis()));
pendingIntent = PendingIntent.getBroadcast(mContext, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 15000,
15000,
pendingIntent);
intent2 = new Intent(getContext(), TimeAlarm2.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
intent2.setAction(Long.toString(System.currentTimeMillis()));
pendingIntent2 = PendingIntent.getBroadcast(getContext(), 1,
intent2, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 15000,
15000,
pendingIntent2);
TimeAlarm.class!
のために働いている
これは、あなたがこの問題を解決するのに役立つかもしれないが、私はわかりません。 Ref:http://stackoverflow.com/questions/36347187/how-to-stop-alarmmanager-when-activity-start/36349036#36349036 – Sabari
@佐波里ありがとう、私はコードを混合して解決しました。しかし今、問題は私が手動でアプリを殺すときです..通知は発射され続け、私は再びアプリケーションを開いて、私はアラームマネージャがキャンセルされていない停止ボタンを押してください。 –
停止ボタンのクリックイベントを完全に共有できますか? – Sabari