簡體   English   中英

從狀態欄中刪除通知圖標

[英]Remove the notification icon from the status bar

我在狀態欄中顯示一個圖標。現在我想在打開該內容時立即刪除該圖標,一段時間后如果我們收到任何提醒,該圖標將再次顯示。 我怎樣才能做到這一點?

使用NotificationManager取消通知。 您只需提供通知ID即可。

https://developer.android.com/reference/android/app/NotificationManager.html

private static final int MY_NOTIFICATION_ID= 1234;
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(MY_NOTIFICATION_ID, notification);

示例代碼不完整。 這取決於您創建通知的方式。 只需確保使用相同的ID取消您在創建通知時使用的通知。

取消:

mNotificationManager.cancel(MY_NOTIFICATION_ID);

如果要在用戶單擊時刪除通知, 在創建通知之前設置通知標志FLAG_AUTO_CANCEL

我使用了Builder模式,因此您可以從setter setAutoCancel(true)設置自動取消。 看起來像這樣:

    String title = "Requests"; 
    String msg = "New requests available.";
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_gcm_icon)
                    .setContentTitle(title)
                    .setAutoCancel(true)
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(msg))
                    .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
Intent resultIntent = new Intent(application, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultPendingIntent = PendingIntent.getActivity(application, 0, resultIntent, 0);
NotificationManager nmgr = (NotificationManager) application.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(application)
            .setSmallIcon(R.drawable.icon_battery)
            .setContentTitle(application.getString(R.string.app_name))
            .setContentText("your text")
            .setOnlyAlertOnce(false)
            .setAutoCancel(true)
            .setTicker("your ticker")
            .setDefaults(Notification.DEFAULT_SOUND  ) //| Notification.DEFAULT_VIBRATE
            .setContentIntent(resultPendingIntent)
            .setVisibility(VISIBILITY_SECRET)
            .setPriority(Notification.PRIORITY_MIN);

Notification mNotification = mBuilder.build();
//  mNotification.flags |= FLAG_NO_CLEAR;
nmgr.notify(0, mNotification);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM