从通知栏中删除其他应用程序的通知

joh*_*boh 18 android android-notifications android-notification-bar

我想从通知栏中显示的其他应用程序中删除通知.那可能吗?NotificationManager.cancelAll();据我所知,仅取消调用应用程序显示的通知.

我为什么要这样做?

我有一个通过网页读取和发送短信的应用程序,我希望这个应用程序与现有的SMS应用程序如Handcent SMS共同退出.我希望它的工作方式是,当通过网页阅读新收到的短信时,我想取消Handcent SMS显示的新SMS通知,因为现在已经读取了新短信.我正在将短信标记为已读,并且一旦我打开Handcent SMS,Handcent SMS就会将其识别为已读取,但是直到我点击实际的短信,通知仍然存在.

有两种情形; 1号:

  1. Android设备收到短信.
  2. Handcent SMS显示通知.
  3. 用户在设备上阅读SMS.
  4. Handcent SMS删除通知并将SMS标记为已读.

Senario 2:

  1. Android设备收到短信.
  2. Handcent SMS显示通知.
  3. 用户通过Web界面读取SMS.
  4. 我的应用程序清除了Handcent SMS显示的新SMS通知,并将SMS标记为已读.

这可能吗?

Oas*_*eng 15

从Android 4.3开始,您现在可以取消任何应用的通知.

您需要将您的应用注册为NotificationListenerService,然后致电NotificationListenerService.cancelNotification(String pkg, String tag, int id)取消一个通知.

  • 请注意,创建NotificationListenerService的实例并调用cancelNotification()将导致NullPointerException.您必须扩展NotificationListenerService并启动该服务,然后从服务中取消通知. (2认同)

Qua*_*adX 5

您可以使用NotificationListenerService关闭任何通知:

public class NotificationListener extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
      cancelNotification(sbn.getKey());
    }
}
Run Code Online (Sandbox Code Playgroud)

您的应用程序必须具有BIND_NOTIFICATION_LISTENER_SERVICE权限. https://developer.android.com/reference/android/service/notification/NotificationListenerService.html


Jor*_*sys 4

您可以使用NotificationManager取消自己的通知。
但你无法取消其他应用程序的通知,这是不可能的。

  • 我有一点困惑。谁的答案才是真正正确的?你的,还是@Oasis Feng? (2认同)