Android:如果最初的活动不是从启动器启动的,则通知将启动新活动而不是恢复旧活动

Android:如果最初的活动不是从启动器启动的,则通知将启动新活动而不是恢复旧活动,android,android-activity,android-intent,notifications,Android,Android Activity,Android Intent,Notifications,我花了一周的时间寻找解决方案,但没有成功,所以我需要帮助 当我的应用程序转到后台时,会出现通知并显示活动状态 如果应用程序是从启动器启动的(使用action=android.intent.action.MAIN和category=android.intent.category.launcher),它就可以正常工作。 但是,如果应用程序是使用actionandroid.intent.action.SEND或android.intent.action.SEND\u MULTIPLE和category

我花了一周的时间寻找解决方案,但没有成功,所以我需要帮助

当我的应用程序转到后台时,会出现通知并显示活动状态

如果应用程序是从启动器启动的(使用
action=android.intent.action.MAIN
category=android.intent.category.launcher
),它就可以正常工作。 但是,如果应用程序是使用action
android.intent.action.SEND
android.intent.action.SEND\u MULTIPLE
和category
android.intent.category.DEFAULT
从库中启动的,则通知将启动新活动,而不是恢复现有活动

通知代码:

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);
换句话说,我有一个应用程序“我的应用程序”和活动“我的活动”。如果在gallery顶部启动“我的活动”并创建通知,则在按下通知后,将启动“我的应用程序”,而不是使用“我的活动”恢复gallery

你知道怎么治好它吗

    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;