我花了一周的时间寻找解决方案但没有成功,所以我需要帮助。
当我的应用程序进入后台时,会出现通知并显示 Activity 状态。
如果应用程序从启动器启动(使用 action = android.intent.action.MAIN
和 category = android.intent.category.LAUNCHER
),它会完美运行。但是如果应用程序是从 f.e. 开始的。从库中使用操作 android.intent.action.SEND
或 android.intent.action.SEND_MULTIPLE
和类别 android.intent.category.DEFAULT
, 然后通知开始新的 Activity 而不是恢复现有的 Activity 。
通知代码:
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager notificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon;
Notification notification = new Notification(icon, null, 0);
notification.flags |= Notification.FLAG_ONGOING_EVENT|Notification.FLAG_AUTO_CANCEL|Notification.FLAG_ONLY_ALERT_ONCE;
Context context = this.getApplicationContext();
CharSequence contentTitle = "XXX";
CharSequence contentText = "XXX";
Intent notificationIntent = new Intent(context, MyClass.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent activityIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, activityIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
换句话说,我有一个应用程序“我的应用程序”,其 Activity 为“我的 Activity ”。如果“我的 Activity ”在图库顶部启动并创建通知,则在按下通知后“我的应用程序”将启动,而不是使用“我的 Activity ”恢复图库。
你知道如何治愈它吗?
Intent myIntent = new Intent(this, MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(
getBaseContext(), 0, myIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notification.flags = notification.flags
| Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
我是一名优秀的程序员,十分优秀!