Android状态栏通知:使其无法清除并返回应用程序(不启动新实例)

Posted

技术标签:

【中文标题】Android状态栏通知:使其无法清除并返回应用程序(不启动新实例)【英文标题】:Android Status Bar Notification: make it un-clearable and have it return to app (not start a new instance) 【发布时间】:2011-10-15 12:39:19 【问题描述】:

我正在开发一个 android 应用,我想要一个用户无法清除的状态栏通知。有谁知道这是怎么做到的吗?我见过他们使用诸如 Skimble 之类的应用程序,在使用该应用程序时会出现不可清除的通知。

另外,当用户单击/按下通知时,我希望它返回到已经运行的应用程序实例。现在它启动一个新实例。再次像 Skimble 应用程序一样,我只想返回到已经运行的应用程序实例。

谢谢。

【问题讨论】:

【参考方案1】:

我找到了解决这个问题的方法。我使用 FLAG_ONGOING_EVENT 使通知持续存在。代码如下:

  String ns = Context.NOTIFICATION_SERVICE;
  NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

    int icon = R.drawable.mypic;
    long when = System.currentTimeMillis();
    Notification notification = new Notification(icon, tickerText, when);
    notification.flags = Notification.FLAG_ONGOING_EVENT;

    Context context = getApplicationContext();
    CharSequence contentTitle = "Title Text";
    CharSequence contentText = "Content text.";

    Intent intent = new Intent(this, MyClass.class); 
    intent.setAction("android.intent.action.MAIN"); 
    intent.addCategory("android.intent.category.LAUNCHER"); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

    final int HELLO_ID = 1;
    mNotificationManager.notify(HELLO_ID, notification);

【讨论】:

除了使用FLAG_ONGOING_EVENT,您还可以使用FLAG_NO_CLEAR,具体取决于您希望通知出现的位置(更多信息here)【参考方案2】:

这是NotificationCompat.Builder的解决方案

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("MyApp")
        .setContentText("MyMsg")
        .setOngoing(true);

更多信息请访问Google docs。

【讨论】:

【参考方案3】:

notification.setLatestEventInfo 已弃用,因此您必须使用 Notification.builder,如果您使用 2.X 及更低版本的 API,则必须使用 NotificationComacpt.Builder,这不适用,我无法保留通知。所以我使用 setDeleteIntent 并指向相同的活动,并在 resume 方法上调用显示通知的代码块。所以这是一种解决方法。

【讨论】:

以上是关于Android状态栏通知:使其无法清除并返回应用程序(不启动新实例)的主要内容,如果未能解决你的问题,请参考以下文章

在android应用程序中,调用onResume方法时清除状态栏中的小图标

android 怎么让通知栏点击后不消失 但可以被按钮清除

Phonegap 状态栏通知,Android,iOS

android状态栏通知图标

Android控件之Notification

FCM 推送通知在返回应用程序时打开,而不是在 iOS 的状态栏中显示