数日前、アラームにカスタムインテントを使用する方法を見つけるのに苦労していました。明確な答えを得ましたが、たとえば、いくつかの一意のIDに基づいてインテントをカスタマイズする必要があります。setAction()
まだいくつかの問題があります。
このようにPendingIntentを定義します。
Intent intent = new Intent(this, viewContactQuick.class);
intent.setAction("newmessage"+objContact.getId());//unique per contact
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK ).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP );
intent.putExtra("id", Long.parseLong(objContact.getId()));
intent.putExtra("results", result.toArray());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
次に、これは通知マネージャーによって使用されます
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
// first try to clear any active notification with this contact ID
mNotificationManager.cancel(Integer.parseInt(objContact.getId()));
// then raise a new notification for this contact ID
mNotificationManager.notify(Integer.parseInt(objContact.getId()), notification);
これは次のように機能します。
- アプリケーションは連絡先のメッセージを作成します
- インテントには、連絡先IDとメッセージの詳細が記載されています
- メッセージとともに通知が発生します
- ユーザーが通知に対してアクションを実行すると、アプリはインテントによって渡されたメッセージを表示します
問題
これは、連絡先に対して複数回発生する可能性があります。また、2番目のメッセージが生成されると、通知は適切に発生しますが(メッセージは問題ありません)、ユーザーが通知を実行すると、古いデータが使用されるため、新しいメッセージではなく前のメッセージが渡されます。
したがって、どういうわけか、意図は以前のエクストラをキャッシュして再利用することです。連絡先ごとおよびアクションごとに一意にするにはどうすればよいですか?