android - 如何使通知不可取消/不可删除

标签 android notifications

我想让我的 Android 通知保留,即使用户点击它或点击清除所有...

现在它有时会保留,有时会被删除,我不确定是什么原因造成的。

这是我的通知代码:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static void createNotification()
{
    NotificationManager notificationManager = (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                            .setContentTitle("Wolftech Field Agent")
                            .setContentText("Getting Status")
                            .setSmallIcon(R.drawable.ic_launcher)
                            .setOngoing(true)
                            .setAutoCancel(false);

    Intent intent = new Intent(context, FieldAgent.class);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(FieldAgent.class);
    stackBuilder.addNextIntent(intent);

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,  PendingIntent.FLAG_UPDATE_CURRENT);

    builder.setContentIntent(pendingIntent);

    notificationManager.notify(NOTIFICATION_ID, builder.build());
}

public static void updateNotificationText(String inString)
{
    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
                                            .setContentText(inString)
                                            .setContentTitle("Wolftech Field Agent")
                                            .setSmallIcon(R.drawable.ic_launcher)
                                            .setOngoing(true)
                                            .setAutoCancel(false);

    Intent intent = new Intent(context, FieldAgent.class);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addParentStack(FieldAgent.class);
    stackBuilder.addNextIntent(intent);

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,  PendingIntent.FLAG_UPDATE_CURRENT);

    builder.setContentIntent(pendingIntent);

    notificationManager.notify(NOTIFICATION_ID, builder.build());
}

public static void cancelNotification()
{
    NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.cancel(NOTIFICATION_ID);
}

最佳答案

我想你正在寻找持续的通知,在这种情况下,如果你正在使用 NotificationCompat.Builder ,你可以使用:

NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(this);
mNotifyBuilder.setOngoing(true);

关于android - 如何使通知不可取消/不可删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857326/

相关文章:

android - 如何在应用程序停止时在 Android 中获取本地通知?

android - 当 "Hide sensitive information"处于 Activity 状态时显示通知数据

android - maven-android-sdk-deployer 更新 .m2 repo

android - 如何在 NDK 中将 ascii 转换为 char?

android - Unity游戏白屏

android - 仅在用户启用时发送通知

android - 无法解析 PendingIntent.getActivity()

android - 为什么要通过 Application 类来管理生命周期?

android - 如何从 Android 客户端应用程序在 Ubuntu 服务器上执行一组 Python 脚本并将结果返回给客户端应用程序

android - Android Wear Preview 的语音输入