从通知启动我的一个应用程序时出现问题。它永远不会出现在“最近的应用程序”列表中。

没有通知,一切都会按预期进行:我启动了该应用程序,导航至该应用程序,然后退出该应用程序(使用主屏幕按钮或后退按钮),然后长按主屏幕按钮=>确定即可返回该应用程序。

当我收到通知时问题开始。如果我从通知中启动应用程序,它将启动正确的屏幕,并且我可以使用该应用程序=>确定。但是,当我退出该应用程序(带有“主页”或“后退”按钮)时,它不再出现在“最近的应用程序”列表中。更确切地说:

  • 如果在从通知启动应用程序之前该应用程序已出现在“最新应用程序”列表中,则会将其删除
  • 如果该应用程序未出现在“最近的应用程序”列表中,则不会添加它

  • 下面是我在状态栏中添加通知的原始代码:
    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中进行了描述:

    10-08 10:52
    查看更多