Starting the app from Notification remove it from recent app history

后端 未结 5 1512
逝去的感伤
逝去的感伤 2021-02-12 23:04

I have a problem in one of my apps when I start it from a notification. It never appears in the \"recent app\" list.

Without notifications, every thing works as expected

相关标签:
5条回答
  • 2021-02-12 23:17

    Try adding to the manifest the following:

    android:excludeFromRecents = "false"
    

    Good luck, Luis

    0 讨论(0)
  • 2021-02-12 23:21

    You need to use separate Intent Filters for each action/category pair:

    <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>
        <intent-filter>
            <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>
    
    0 讨论(0)
  • 2021-02-12 23:28

    Old topic but I discover solution (and I can't find in web anyone), maybe it will be helpful for sb. It doesn't give possibility to set any activity as a parent but I think (not sure) that you can change it programmatically (in OpenFromNotificationActivity) if it is necessary.

    In manifest

    <activity android:name=".OpenFromNotificationActivity" 
                android:label="@string/label">
                <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".StartSplashActivity" />
     </activity>
    
     <activity android:name=".StartSplashActivity"
                android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
     </activity>
    
    0 讨论(0)
  • 2021-02-12 23:32

    Add the action android.intent.action.MAIN and the category android.intent.category.LAUNCHER to the specification of your activity. Having two actions and categories seem like a hack but it's 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>
    

    That should add it to the recent applications list. The reason is described in the Android developer documentation:

    An intent filter of this kind causes an icon and label for the activity to be displayed in the application launcher, giving users a way to launch the activity and to return to the task that it creates any time after it has been launched.

    This second ability is important: Users must be able to leave a task and then come back to it later using this activity launcher. For this reason, the two launch modes that mark activities as always initiating a task, "singleTask" and ""singleInstance", should be used only when the activity has an ACTION_MAIN and a CATEGORY_LAUNCHER filter. Imagine, for example, what could happen if the filter is missing: An intent launches a "singleTask" activity, initiating a new task, and the user spends some time working in that task. The user then presses the Home button. The task is now sent to the background and is not visible. Now the user has no way to return to the task, because it is not represented in the application launcher.

    0 讨论(0)
  • 2021-02-12 23:32

    I bumped into same issue. The problem was that my activity had android:label="". When I open Activity from the Notification then it replaces root activity in the app task with current one. And Android excludes activities with empty label from Recents (see source code).

    To hide title of activity you should use:

    getActionBar().setDisplayShowTitleEnabled(false);
    
    0 讨论(0)
提交回复
热议问题