web-dev-qa-db-ja.com

Android)で毎回新しい保留中のインテントを作成します

毎回保留中のインテントを作成するにはどうすればよいですか?現在、私の既存の保留中のインテントは新しいものに置き換えられています。 FLAG_ONE_SHOTCANCEL_CURRENTを使用してみましたが、機能しませんでした。

17
Chintan

次のように、リクエストコードに乱数を追加します。

Intent intent = new Intent(context, YourClassname.class);
intent.putExtra("some data", "txt");  // for extra data if needed..

Random generator = new Random();

PendingIntent i=PendingIntent.getActivity(context, generator.nextInt(), intent,PendingIntent.FLAG_UPDATE_CURRENT);
34
Zeev G

FLAG_CANCEL_CURRENT-記述されたPendingIntentがすでに存在する場合、新しいものを生成する前に現在のものがキャンセルされます。

FLAG_NO_CREATE-記述されたPendingIntentがまだ存在しない場合は、作成する代わりに単にnullを返します。

FLAG_ONE_SHOT-このPendingIntentは1回だけ使用できます。

FLAG_UPDATE_CURRENT-記述されたPendingIntentがすでに存在する場合、それを保持しますが、余分なデータをこの新しいインテントにあるものに置き換えます。

複数の異なるPendingIntentオブジェクトを同時にアクティブにする必要がある場合(両方が同時に表示される2つの通知として使用する場合など)、それらを異なるものに関連付けるには、それらについて異なるものがあることを確認する必要があります。保留中のインテント。これは、_Intent.filterEquals_によって考慮されるIntent属性のいずれか、またはgetActivity(Context, int, Intent, int), getActivities(Context, int, Intent[], int), getBroadcast(Context, int, Intent, int), or getService(Context, int, Intent, int).に提供される異なる要求コード整数である可能性があります。

11