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状态栏通知:使其无法清除并返回应用程序(不启动新实例)的主要内容,如果未能解决你的问题,请参考以下文章