Cant cancel Notification using NotificationListene

2019-01-28 17:09发布

This is my service:

public class Listener extends NotificationListenerService {



    Context context;

    @Override

    public void onCreate() {

        super.onCreate();
        context = getApplicationContext();

    }

    @Override

    public void onNotificationPosted(StatusBarNotification sbn) {


        String pack = sbn.getPackageName();
        String ticker = sbn.getNotification().tickerText.toString();
        Bundle extras = sbn.getNotification().extras;
        String title = extras.getString("android.title");
        String text = extras.getCharSequence("android.text").toString();

        Log.i("Msg",pack);
        Log.i("Msg",ticker);
        Log.i("Msg",title);
        Log.i("Msg",text);

        Intent msgrcv = new Intent("Msg");
        msgrcv.putExtra("package", pack);
        msgrcv.putExtra("ticker", ticker);
        msgrcv.putExtra("title", title);
        msgrcv.putExtra("text", text);

        LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);
        Toast.makeText(context, "GOT SOMETHING", Toast.LENGTH_LONG).show();

 //final String T=  sbn.getKey();

        Listener.this.cancelAllNotifications();
    }

    @Override

    public void onNotificationRemoved(StatusBarNotification sbn) {
        Log.i("Msg","Notification Removed");

    }


}

For testing, I would like to DISMISS ALL NOTIFICATIONS FROM ANY APP as soon as they arrive. I have called Listener.this.cancelAllNotifications(); inside onNotificationPosted, but it does not work.

What am I doing wrong ? I am testing this on android version 5.0.2.

P.S.

I HAVE added the permissions along with the intent filter, as android mentions.

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

2条回答
SAY GOODBYE
2楼-- · 2019-01-28 17:34

For how to let user enable their Notification Access,

You can show a Popup ("Please enable Notification Access"), and when user clicks "OK", it will redirect user to the settings page, to enable the Notification Access settings.

private static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";

private void openNotificationAccess() {
    startActivity(new Intent(ACTION_NOTIFICATION_LISTENER_SETTINGS));
}
查看更多
Anthone
3楼-- · 2019-01-28 17:53

Make sure the 'Notification Access' is active (checked) for the app implementing your NotificationListenerService.

It can be verified in 'Settings' menu. It is at either of the addresses depending upon the Android version. For Android 5.0, it should be at: Settings -> Sound & notification -> Notification Access

Or else, you may find at: Settings -> Security -> Notification Access

Try enabling it for your app and then try to clear the notifications.

查看更多
登录 后发表回答