1

BroadcastReceiverに送信する複数のインテントをスケジュールしています。 すべてのインテントの違いは、受信する時間とそれに含まれる余分なデータです。AlarmManagerで特定のPendingIntentsをキャンセルする

これで、特定のアラームをキャンセルできるようにする必要があります。 AlarmManager.cancel()のjavadocによると、それはfilterEqualsメソッドを使用してインテントを比較しています

http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent) 

さて問題はfilterEqualsによると、すべての私の意図が同じであることです。 「アクション、データ、タイプ、クラス、およびカテゴリ」に対するメソッドのチェック

とユニークなデータの意図余分なバンドルまたはAlarmManagerの時間としてのいずれかです。なるだろう

intent.setData(Uri.withAppendedPath(Uri.EMPTY, "some_unique_data")); 

は、すべての意図ユニークfilterEqualsの方法によれば、このような何かにデータを変更した後、私の意図はもうBroadcastReceiverに到達していない:使用して、たとえば - 私はこれらのパラメータを変更しようとしました。

具体的にどのようなデータのビット、私はまだ私の単純なBroadcastReceiverに受取filterEqualsによると、すべての意思一意にするために変更するとことができますか?

おそらく私は自分の受信機を変更することができますか?

+0

がありrequestCodeと呼ばれるPendingIntent.getBroadcastメソッド内のパラメータであるが、それはドキュメントの状態をだとして。これは、このコードが使用されていないこと、または保留中のインテントをキャンセルするための一意のIDとして指定できることを意味しますか? – Kostas

+0

あなたはあなたの答えを受け入れることができますか?それは開いている質問のリストからこの質問を削除し、おそらく同様の問題を抱えている他の人を助けるでしょう。ありがとう。 –

答えて

1

私のアプリでも同様の問題が発生しました。 私のアプリでは、SQLite DBを使用して、各アラームの詳細と一意のROW_IDを保存しました。

は、だから私のアラームリストビューでは、各行は、それに関連付けられた対応ROW_IDを持っていました。 ユーザーが特定の行をクリックした場合、私はちょうど

さて、私のすべてのアラームは以下のように自分のデータ部分のセットを持っていたテントで作成された削除操作を実行する方法には、このROW_IDを渡す:

Uri.parse(Constants.INTENT_PRE + ROW_ID); 

それらを削除するために、作成中に使用された同じデータ(前述のように、一意のROW_IDと共に)を持つインテントを作成します。言いたいこと

言うまでもなくは、「アクション、データ、タイプ、クラス、およびカテゴリ」から、唯一の「データ」の部分は、私の既存のPendingIntents毎に異なります。

希望すると便利です。

+0

ねえ。まあ、あなたの定数で何を持っているのかわかりませんが、INTENT_PREがなく、たとえばUri.parse(Constants.CONTENT_DIRECTORY + o.getId())にdataを設定すると、まだbroadcastReceiverに受信できなくなります。 – Kostas

+0

定数は自分のクラスで、翻訳する必要がないか、UIの一部ではない文字列定数をいくつか保存します。 – zeiger

3

私はそれを理解しました。私のすべてのアラームが独特の時間とオブジェクトIDを持っているように、これは私が私のPendingIntentを作成する方法である:

return PendingIntent.getBroadcast(context, time*100000+o.getId(), toFire, 0); 

今の時間は24または15(私は私のアラームを発射24時間前または15分イベントの前に)およびアラームデータのいずれかでありますオブジェクトに一意のIDが含まれていますだから私は両方を追加し、getBroadcastの "requestCode"パラメータとして指定します。それは同じデータに基づいてユニークなインテントを作成するのに十分です。 これは、同じ問題を抱えている人に役立ちます。 「送信者のrequestCodeプライベート要求コード(現在は使用されません)。」:

関連する問題