我正在开发一个Android应用程序,它可以阻止某些应用程序基于用户位置的通知,这有点是来自Play商店的通知管理器的扩展,这里是这个应用程序的链接:
https://play.google.com/store/apps/details?id=com.mobisystems.android.notifications&hl=en_GB
经过一段时间的研究,我找不到任何合适的API来实现这样的功能(或者我错过了一些)。我想知道如何拒绝来自某个应用的通知或更改其通知设置?
Edit1:感谢fiddler关于实施我自己的NotificationListenerService的建议,我想就如何获得更多帮助/建议。
答案 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>