2016-08-29 5 views
6

specificationによれば、.setDeleteIntent(pendingIntent)は両方の操作(通知バーのすべてのイベントを消去し、スワイプのようなユーザーの操作を削除)に関連付けられます。Android:通知バーからすべてのイベントをユーザーの操作から削除する方法

私の要件は、通知バーに表示される通知に触れたときに、NotificationsList.classに転送する必要があるということです。これは私のpendingInentで行われます。

PendingIntent sendPendingIntent = PendingIntent.getActivity(context, reminderId, new Intent(context, NotificationsList.class), PendingIntent.FLAG_UPDATE_CURRENT); 

しかし、CLEARボタンをクリックすることで、ユーザーは、すべてのアプリケーションにナビゲートすることがない必要があります。 .setDeleteIntent(pendingIndent)では2番目の要件を満たすことができません。ユーザーはまだNotificationsList.classにナビゲートされています。

CLEARボタンから発生したすべての通知イベントCLEARを、通知バーの特定の通知のタッチまたはスワイプのようなユーザーアクションからプログラムで区別する方法はありますか?

+0

あなたの質問の答えは見つかりましたか?あなたはもう助けが必要ですか?あなたがすれば教えてください! – bendaf

+0

これ以上ヘルプブローは必要ですか?なぜあなたは何の答えも受け入れていないのですか? – bendaf

+0

あなたの質問に対する回答が下記から受け入れるか、質問を変更してください。 – bendaf

答えて

2

説明していることは、非常に鈍い動作です。保留中のインテントを通知に設定するだけで済みます。クリックすると、それを裏付けるインテントが実行されます。

通知がクリアされたときにコードがユーザーにアプリを戻している場合は、の問題が既にあります。問題があります。ユーザーが通知をクリアした場合は、それらを戻すことは避けてください。したがって、setDeleteIntent()はアクティビティの開始に関連付けるべきではありません。

(setContentIntent())通知をクリックして通知をクリアしたときに反映されるインテントは、基本的に2つのPendingIntentsです。問題は同じであってはいけません。

1

2つのイベントを区別することはできません。 documentationが言うように:

通知が表示されたまま、次のいずれかが起こるまで:

  • ユーザーが個別にまたは(通知がクリアできるのであれば)、「すべてクリア」を使用して通知を閉じます。
  • ユーザーは通知をクリックし、通知を作成したときにsetAutoCancel()を呼び出しました。
  • 特定の通知IDには、cancel()を呼び出します。このメソッドは、進行中の通知も削除します。
  • cancelAll()に電話すると、以前に発行したすべての通知が削除されます。

そこで、基本的プログラマの観点から、三つの異なるイベントが存在している:

  • あなたは通知
  • を閉じる通知
  • をユーザーがクリックするには、ユーザーが(通知を閉じますスワイプまたはクリアすることによって)

最初のイベントが発生しましたcancelAll()またはcancel()と呼んで自分で解決してください。

あなたは(これはあなたがしたい私は思います)のように第二を処理することができます:私は

builder.setDeleteIntent(pendingIndent) 

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
     //.... 
     .setContentIntent(sendPendingIntent); 

そして、あなたは(あなたが上記したように)のような3番目のイベントを処理することができますユーザーが通知を却下した後にアクティビティを開始することはお勧めしません。なぜなら、ユーザーは予期せず、ユーザーエクスペリエンスが悪くなるからです。

私は助けてくれることを願っています。

1

design guidelinesによれば、ユーザーは、クリック、スワイプ、ピンチズームなどのより高いレベルのジェスチャーを使用して通知とやりとりすることが期待できます。タッチのような低レベルのイベントに即座に応答すると、これらのジェスチャが短絡されるため、要件が設計ガイドラインに違反し、実装するべきではありません。

通知をクリックしたときにユーザーが転送されるように要件が変更された場合は、スワイプとクリアを区別する必要はありません。

あなたの問題は、要件の1つの単語を変更することで解決する必要があります:touch - > click。

関連する問題