从通知启动我的一个应用程序时出现问题。它永远不会出现在“最近的应用程序”列表中。
没有通知,一切都会按预期进行:我启动了该应用程序,导航至该应用程序,然后退出该应用程序(使用主屏幕按钮或后退按钮),然后长按主屏幕按钮=>确定即可返回该应用程序。
当我收到通知时问题开始。如果我从通知中启动应用程序,它将启动正确的屏幕,并且我可以使用该应用程序=>确定。但是,当我退出该应用程序(带有“主页”或“后退”按钮)时,它不再出现在“最近的应用程序”列表中。更确切地说:
下面是我在状态栏中添加通知的原始代码:
mNotification = new Notification(R.drawable.ic_notif, message, System.currentTimeMillis());
mNotification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent notificationIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(link));
notificationIntent.putExtra(...);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
mNotification.setLatestEventInfo(context, context.getString(R.string.app_name), message, contentIntent);
notificationManager.notify(ConfigApp.NOTIFICATION_ID, mNotification);
我尝试添加FLAG_ACTIVITY_NEW_TASK,但没有帮助:
Intent notificationIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(link));
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notificationIntent.putExtra(...);
Activity 的 list 声明由通知开始:
<activity
android:name=".activity.ActivityMessages"
android:label=""
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="hostapp"
android:pathPrefix="/prefixapp"
android:scheme="schemeapp" />
</intent-filter>
</activity>
有人在收到通知后知道如何将应用程序保留在“最近的应用程序”列表中吗?
最佳答案
将 Action android.intent.action.MAIN
和类别android.intent.category.LAUNCHER
添加到您的 Activity 规范中。具有两个 Action 和类别似乎很简单,但这是actually supported by Android。
<activity
android:name=".activity.ActivityMessages"
android:label=""
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="hostapp"
android:pathPrefix="/prefixapp"
android:scheme="schemeapp" />
</intent-filter>
</activity>
那应该将它添加到最近的应用程序列表中。原因在Android developer documentation中进行了描述: