如何删除粘性通知?

时间:2018-06-22 11:35:34

标签: android android-notifications

我是android新手。我已经开发了可在应用程序启动时启动服务的android应用程序。

我所拥有的: 当前,当应用程序启动时,它将在通知区域中创建粘性通知,如屏幕截图所示。

enter image description here

服务源代码:

public class InfiniteService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();

    Intent notificationIntent = new Intent();

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
            notificationIntent, 0);



    Notification notification = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(getString(R.string.app_name)) 
            .setContentText("Welcome To TestApp") 
            .setContentIntent(pendingIntent).build();

    startForeground(1337, notification);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //Log.e("InfiniteService", "Service started");
    return START_STICKY;
}


@Override
public void onDestroy() {
    super.onDestroy();
    //Log.e("InfiniteService", "onDestroy");
    sendBroadcast(new Intent("InfiniteService"));
}

我想要的东西: 我想摆脱通知区域中的此粘性通知。相反,我希望服务在后台连续运行。

我尝试过的方法:

  • 我尝试在onStartCommand中“返回START_NON_STICKY”,最初的印象是它将删除粘性通知,但后来从 here 获悉,START_STICKY告诉操作系统在此之后重新创建服务有足够的内存

  • 我怀疑PendingIntent正在这样做,但是在阅读explanation之后,再次知道这不是我想要的。

  • 然后我搜索了如何在android中创建粘性通知,以期获得一些提示。阅读 this 文章后,了解标记使其具有粘性。我在整个代码中搜索了“ Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT”,但未找到任何内容。

我想念什么?任何指针/帮助都很好。谢谢。

1 个答案:

答案 0 :(得分:0)

按照这篇文章中描述的说明进行操作:

if constexpr

对我有用。