私はこのAndroid環境全体に慣れていないので、通常、非常に基本的な知識と少しばかげていると考えられるかもしれないという疑問があります。私は自分が持っている疑問と、なぜそれを持っているのかを説明するために最善を尽くします。
私はあなたが望む学者のクラスを思い出させるためにあなたが通知を設定することができるアプリケーションをやっています。BroadcastReceiverを拡張するクラスを実行したので、デバイスの起動後にすべてのアラームをリセットできます。クラス、構成する必要のある時間など、アラームに関する情報を保持するデータベースがあります。すべてのアラームを取得し、次のようにalarmManagerに設定します。
intent = new Intent(ctxt.getApplicationContext(), Notificacion.class);
intent.putExtra("TAG", tag);
intent.putExtra("SUBJECT", cursor2.getString(0));
intent.putExtra("AULA", cursor2.getString(1));
displayIntent = PendingIntent.getBroadcast(ctxt, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT );
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY*7, displayIntent);
まあ、これはここまでうまくいくはずだと思います。問題は、アプリを使用して通知を設定する場合、クラス「Schedule.class」からそれを実行しているため、インテントに次のコンテキストが含まれることです。
Intent intent = new Intent(getApplicationContext(), Notification.class);
PendingIntent pend = PendingIntent.getBroadcast(this, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT);
アプリでは、アラームを削除できます。これを行うには、alarmManager.cancel(pend)を呼び出す必要があります。だから私の疑問はそれがそれをキャンセルすることができるかどうかです。
コンテキストが異なる場合、BroadCastReceiver(ctxt)の拡張機能で取得したコンテキストから設定され、Schedule.classから取得したコンテキストでアラームが設定されたため、保留中のインテントとの一致は見つかりません。 。
それで..アプリケーションコンテキストは常に同じですか?何が起こっているかについて他のクラスに情報を提供するためにコンテキストが設定されていることは知っていますが、インテントフィルターがコンテキストが提供された場所を区別するかどうかはわかりません。
前もって感謝します!