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

时间:2011-07-28 21:56:34

标签: android notifications statusbar

我正在开发Android应用,我想要一个无法被用户清除的状态栏通知。有谁知道这是怎么做到的吗?我在Skimble等应用程序中看到过这些应用程序,在使用应用程序时出现了不可清除的通知。

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

感谢。

3 个答案:

答案 0 :(得分:4)

我找到了解决这个问题的方法。我使用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);

答案 1 :(得分:4)

以下是NotificationCompat.Builder

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

更多Google docs

答案 2 :(得分:0)

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