11

我已经编写了通知并在通知栏显示的功能:

private void showNotification()
    {
            CharSequence title = "Hello";
            CharSequence message = "Notification Demo";

            NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            Notification notification = new Notification(R.drawable.icon, "A Notification", System.currentTimeMillis());
            Intent notificationIntent = new Intent(this, Main_Activity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

            notification.setLatestEventInfo(Main_Activity.this, title, message, pendingIntent);
            notificationManager.notify(NOTIFICATION_ID, notification);
    }

它工作正常,但what way we can keep the notification steady at Notification bar即使用户按下通知栏中的“清除”通知按钮?

请查看“雅虎”应用程序的通知栏。

在此处输入图像描述

我已经阅读了这篇 SDK 文章: http: //developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating,但没有找到。

4

2 回答 2

26

利用FLAG_NO_CLEAR

只需在您的Notification实例上设置它,然后再将其提供给NotificationManager

notificaton.flags |= Notification.FLAG_NO_CLEAR;

编辑:我只是注意到,如果您正在使用Notification.Builder(自 Honeycomb 以来)并使通知“持续”,它也将不受“全部清除”的影响。见这里

显然,这应该阻止开发人员FLAG_NO_CLEAR在非持续通知中使用,因为这可能会使用户感到困惑。

于 2011-03-17T12:10:27.087 回答
14

尝试 setOngoing(true)。

notification = new Notification.Builder(getApplicationContext())
          .setLargeIcon(
                   BitmapFactory.decodeResource(getResources(),     R.drawable.ic_launcher))
          .setSmallIcon(R.drawable.ic_launcher).setTicker(tickerText)
          .setWhen(System.currentTimeMillis()).setContentTitle(contentTitle)
          .setOngoing(true)
          .setContentText(contentText)
          .setContentIntent(contentIntent)
于 2013-08-11T05:53:54.430 回答