在某些情况下阻止其他应用程序通知的任何方法?

时间:2017-01-12 15:44:10

标签: android android-notifications

我正在开发一个Android应用程序,它可以阻止某些应用程序基于用户位置的通知,这有点是来自Play商店的通知管理器的扩展,这里是这个应用程序的链接:

https://play.google.com/store/apps/details?id=com.mobisystems.android.notifications&hl=en_GB

经过一段时间的研究,我找不到任何合适的API来实现这样的功能(或者我错过了一些)。我想知道如何拒绝来自某个应用的通知或更改其通知设置?

Edit1:感谢fiddler关于实施我自己的NotificationListenerService的建议,我想就如何获得更多帮助/建议。

2 个答案:

答案 0 :(得分:1)

您需要实现自己的NotificationListenerService

您可能希望覆盖发布新通知时调用的onNotificationPosted方法,并在此处实施您的解雇策略:

@Override
public void onNotificationPosted(StatusBarNotification sbn) {
    // Your blocking strategy here
    cancelNotification(...);
}

答案 1 :(得分:1)

您可以这样做

import android.content.Intent;
import android.os.IBinder;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;

public class Block_All_Notification extends NotificationListenerService {
  @Override
  public IBinder onBind(Intent intent) {
    return super.onBind(intent);
}

@Override
public void onNotificationPosted(StatusBarNotification sbn){
    // Implement what you want here
    // Inform the notification manager about dismissal of all notifications.
    Log.d("Msg", "Notification arrived");
    Block_All_Notification.this.cancelAllNotifications();
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn){
    // Implement what you want here
    Log.d("Msg", "Notification Removed");
}
}

并在清单文件中包含清单文件

<service android:name=".Block_All_Notification"
        android:label="@string/app_name"
        android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
        <intent-filter>
            <action   android:name="android.service.notification.NotificationListenerService" />
        </intent-filter>
    </service>