私はかなり長い間これで戦ってきました。私はアラームマネージャを使ってアラームをスケジュールしています。私はマニフェストファイルで受信者を宣言しています。アプリが実行中またはバックグラウンドでアラームとレシーバーが意図どおりに動作するため、ユーザーがアプリを終了した後にアラームを発することができません。私は本質的にはアプリケーションにローカル通知を加えようとしています。ここでの他の「答え」はどれも大いに役立っていません。アプリケーションが終了したときにローカル通知を発することは可能ですか?ここでAndroidスタジオアラームマネージャアプリが閉鎖
public static void writtenGoalsNotification(Context context) {
final int _id = 15;
pref = context.getSharedPreferences("userpref", 0);
Notification notification = getNotification("Don't forget to write your daily goals!", context, "none", "Goals");
Intent notificationIntent = new Intent(context, NotificationReceiver.class);
notificationIntent.putExtra(NotificationReceiver.NOTIFICATION_ID, "written goals notification");
notificationIntent.putExtra(NotificationReceiver.NOTIFICATION, notification);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, _id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Integer hour = pref.getInt(NotificationKeys.Goals.ReminderTime.hour, 10);
Integer minute = pref.getInt(NotificationKeys.Goals.ReminderTime.minute, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.MILLISECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000 * 60 * 60 * 24, pendingIntent);
}
は、これは私のマニフェストにある
public class NotificationReceiver extends WakefulBroadcastReceiver {
public static String NOTIFICATION_ID = "notification-id";
public static String NOTIFICATION = "notification";
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra(NOTIFICATION);
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
notificationManager.notify(id, notification);
startWakefulService(context, intent);
WakeLocker.acquire(context);
WakeLocker.release();
}
}
、
<receiver
android:name=".Controllers.NotificationReceiver"
</receiver>
ショーのエラーログ – DroiDev
は、私はより説明的な何かを得ることができるのですか?コードがエラーを生成していない、アプリが実行中またはバックグラウンドで通知が正しく発生します。問題は、アプリケーションが閉じられると、アラームまたは受信者のいずれかが破壊されることです。 –
私はこの問題を誤解しました。私の謝罪を受け入れる。私はあなたがボードキャスト受信機を拡張する必要があると思う.... iveは覚醒している放送受信機で働いたことはない。うまくいけば、他の誰かがあなたを助けるためにチャイムすることができます。 – DroiDev