我使用以下代码将图标添加到Notification状态,用户可以单击图标打开app ui.SMSMain.class,如果用户单击图标,将打开两个ui.SMSMain.class应用程序两次。 我希望应用程序只能打开一次,我该怎么办?
private static void ShowNotification() {
NotificationManager notificationManager = (NotificationManager) myContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.smsforward,
myContext.getString(R.string.app_name),
System.currentTimeMillis());
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
CharSequence contentTitle =myContext.getString(R.string.NotificationTitle);
CharSequence contentText = myContext.getString(R.string.NotificationContent);
Intent notificationIntent = new Intent(myContext, ui.SMSMain.class);
PendingIntent contentItent = PendingIntent.getActivity(myContext, 0,
notificationIntent, 0);
notification.setLatestEventInfo(myContext, contentTitle, contentText,contentItent);
notificationManager.notify(NotificationID, notification);
}
答案 0 :(得分:1)
在清单中将您的活动添加launchMode
属性为SingleTop
<activity
android:name="Tracking"
android:label="@string/app_name"
android:launchMode="singleTop">
....
这只允许活动的一个实例,最好在pendingIntent中使用标记PendingIntent.FLAG_UPDATE_CURRENT
PendingIntent contentItent = PendingIntent.getActivity(myContext, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
但是,我不确定0实际是否引用UPDATE_CURRENT
<强>更新强>
您可能需要根据需要在singleTop或singleTask中进行选择
for singleTop:如果活动实例已存在于当前任务的顶部且系统路由意图此活动,则不会创建新实例
for singleTask:将始终创建一个新任务,并将新实例作为根任务推送到任务。但是,如果任何任务中存在任何活动实例,系统会通过onNewIntent()方法调用将意图路由到该活动实例。
了解有关LaunchMode的更多information。
我相信singleTop更适合你的问题。