在NON OREO设备上以编程方式暂停通知

时间:2018-06-11 18:32:15

标签: android android-notifications notification-listener

在我的应用程序中,我有一项需要在后台运行的服务。我在前台模式启动它,它需要通知工作。我需要实现一个功能,用户可以将与该服务相关的通知延后。我使用了NotificationListenerService,其中有一个名为snoozeNotification的方法。但是这种方法需要api 26并且只适用于oreo设备。对于非oreo设备,我认为唯一的解决方案是通知用户他可以从设置中暂停应用程序的所有通知。但是,此解决方案会暂停其他需要显示的通知。你有其他解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

DeleteIntent:是一个PendingIntent对象,可以与通知关联,并在通知被删除时被触发,以太通过:

用户特定的操作 用户删除所有通知。 您可以将Pending Intent设置为BroadcastReceiver,然后执行您想要的任何操作。

 Intent intent = new Intent(this, MyBroadcastReceiver.class);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
  Builder builder = new Notification.Builder(this):
 ..... code for your notification
  builder.setDeleteIntent(pendingIntent);

在其他地方,只要您关闭/删除通知,就要倾听。

public class MyBroadcastReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
             .... code to handle cancel
         }

  }