通知をクリックしてもAndroid通知が消えない


132

通知に関する問題が発生した場合は、通知バーに表示します。通知フラグを設定しても通知Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCELをクリックしても消えません。私が間違っていることはありますか?

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    int icon = R.drawable.icon;
    CharSequence tickerText = "Ticker Text";
    long time = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, time);
    notification.flags = Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL; 

    Context context = getApplicationContext();
    CharSequence contentTitle = "Title";
    CharSequence contentText = "Text";
    Intent notificationIntent = new Intent(this, SilentFlipConfiguration.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
    mNotificationManager.notify(1,notification);

回答:


304

あなたが構築NotificationしながらNotificationBuilder使用することができますnotificationBuilder.setAutoCancel(true);


2
では、Notification mNotificationManager.notify(1,notification);とNotificationBuilder を使用して通知を作成する場合、どのような違いがありますmNotificationManager.notify(1, mBuilder.build());か?ありがとう。
Yohanes AI 2014

9
この答えは受け入れられるべきです。それは現在のAndroidの設計
理念に沿った

この答えは正しいです。受け入れられたものは機能しますが、常にではありません。GCM(または使用しているもの)に通知がスタックされていると問題が発生します。通知サーバーに対してpingを実行すると、大量の通知が返され、通知の外観がループすることもあります。
Nikola Milutinovic 2014年

5
notificationBuilder.setAutoCancel(true);私のために働いていません。ペンディングインテントの前に置くべきですか?
Kairi San、

129
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL

ドキュメントから:

ユーザーがクリックしたときに通知をキャンセルする必要がある場合に設定する必要があるフラグフィールドにビット単位またはビット単位で追加するビット


3
これは正解ではありません。クラスではなくクラスのNotification.DEFAULT_LIGHTS一部です。適切なセッターについては私の回答を参照してください。Notification.defaultsNotification.flags
Darcy

notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; このメソッドは機能しているsynicに感謝します。
Ravikumar11 2013

1
この回答のコードにより、通知音が複数回再生されました。他の答えをチェックしてください。
ban-geoengineering 2015年

27
// Uses the default lighting scheme
notification.defaults |= Notification.DEFAULT_LIGHTS;

// Will show lights and make the notification disappear when the presses it
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;

1
私はアンドロイドのドキュメントを通過しました。フラグを使用するタイミングがわかりません。なぜ、notification.defaults = notification.DEFAULT_LIGHTSだけでライトを表示できないのですか。旗なしで振動と音が働くからです。
アシュウィン

NotificationBuilderを使用しています、NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(android.R.drawable.ic_popup_sync).setContentTitle( "New Tweet").setContentText( "There are" + count + "tweets)) ; mBuilder.setDefaults(NotificationCompat.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL);
ジョセフ



1

フラグNotification.FLAG_AUTO_CANCELを使用します

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

アプリを起動するには:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(context, App.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

0

通知を削除する

通知は、次のいずれかが発生するまで表示されたままになります。

  1. ユーザーは通知を却下します。
  2. ユーザーが通知をクリックすると、通知の作成時にsetAutoCancel()が呼び出されます。
  3. 特定の通知IDに対してcancel()を呼び出します。このメソッドは、進行中の通知も削除します。
  4. cancelAll()を呼び出すと、以前に発行した通知がすべて削除されます。
  5. setTimeoutAfter()を使用して通知を作成するときにタイムアウトを設定した場合、指定された時間が経過すると、システムは通知をキャンセルします。必要に応じて、指定したタイムアウト期間が経過する前に通知をキャンセルできます。

詳細については、https//developer.android.com/training/notify-user/build-notification?hl = enを参照して ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.