Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d4e9bce authored by Craig Mautner's avatar Craig Mautner
Browse files

Allow a root activity to relinquish task identity

If a an acitivty with attribute android:relinquishTaskIdentity true
is the root activity of a task then the intent of that task will
be that of the first activity in the stack with
android:relinquishTaskIdentity set false.

The ability to set intent also includes the ability to set the
TaskDescription of the task.

Fixes bug 15675610.
Fixes bug 10428661.

Change-Id: Ib28a9eae3b9832eeeef9106adbebe344184ee5ae
parent b0586c92
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -957,6 +957,7 @@ package android {
    field public static final int ratingBarStyleIndicator = 16843280; // 0x1010210
    field public static final int ratingBarStyleSmall = 16842877; // 0x101007d
    field public static final int readPermission = 16842759; // 0x1010007
    field public static final int relinquishTaskIdentity = 16843893; // 0x1010475
    field public static final int repeatCount = 16843199; // 0x10101bf
    field public static final int repeatMode = 16843200; // 0x10101c0
    field public static final int reqFiveWayNav = 16843314; // 0x1010232
@@ -8085,6 +8086,7 @@ package android.content.pm {
    field public static final int FLAG_IMMERSIVE = 2048; // 0x800
    field public static final int FLAG_MULTIPROCESS = 1; // 0x1
    field public static final int FLAG_NO_HISTORY = 128; // 0x80
    field public static final int FLAG_RELINQUISH_TASK_IDENTITY = 4096; // 0x1000
    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
    field public static final int FLAG_STATE_NOT_NEEDED = 16; // 0x10
    field public static final int LAUNCH_MULTIPLE = 0; // 0x0
+7 −0
Original line number Diff line number Diff line
@@ -251,6 +251,13 @@ public class ActivityInfo extends ComponentInfo
     * @see android.app.Activity#setImmersive(boolean)
     */
    public static final int FLAG_IMMERSIVE = 0x0800;
    /**
     * Bit in {@link #flags}: If set, a task rooted at this activity will have its
     * baseIntent replaced by the activity immediately above this. Each activity may further
     * relinquish its identity to the activity above it using this flag. Set from the
     * android.R.attr#relinquishTaskIdentity attribute.
     */
    public static final int FLAG_RELINQUISH_TASK_IDENTITY = 0x1000;
    /**
     * Bit in {@link #flags} indicating that tasks started with this activity are to be
     * removed from the recent list of tasks when the last activity in the task is finished.
+6 −0
Original line number Diff line number Diff line
@@ -2629,6 +2629,12 @@ public class PackageParser {
                    false)) {
                a.info.flags |= ActivityInfo.FLAG_AUTO_REMOVE_FROM_RECENTS;
            }

            if (sa.getBoolean(
                    com.android.internal.R.styleable.AndroidManifestActivity_relinquishTaskIdentity,
                    false)) {
                a.info.flags |= ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY;
            }
        } else {
            a.info.launchMode = ActivityInfo.LAUNCH_MULTIPLE;
            a.info.configChanges = 0;
+2 −1
Original line number Diff line number Diff line
@@ -2742,7 +2742,8 @@
                android:finishOnCloseSystemDialogs="true"
                android:excludeFromRecents="true"
                android:multiprocess="true"
                android:documentLaunchMode="never">
                android:documentLaunchMode="never"
                android:relinquishTaskIdentity="true">
            <intent-filter>
                <action android:name="android.intent.action.CHOOSER" />
                <category android:name="android.intent.category.DEFAULT" />
+9 −0
Original line number Diff line number Diff line
@@ -985,6 +985,14 @@
         Intent.FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS} -->
    <attr name="autoRemoveFromRecents" format="boolean" />

    <!-- Tasks whose root has this attribute set to true will replace baseIntent with that of the
         next activity in the task. If the next activity also has this attribute set to true then
         it will yield the baseIntent to any activity that it launches in the same task. This
         continues until an activity is encountered which has this attribute set to false. False
         is the default. This attribute set to true also permits activity's use of the
         TaskDescription to change labels, colors and icons in the recent task list. -->
    <attr name="relinquishTaskIdentity" format="boolean" />

    <!-- The <code>manifest</code> tag is the root of an
         <code>AndroidManifest.xml</code> file,
         describing the contents of an Android package (.apk) file.  One
@@ -1653,6 +1661,7 @@
        <attr name="documentLaunchMode" />
        <attr name="maxRecents" />
        <attr name="autoRemoveFromRecents" />
        <attr name="relinquishTaskIdentity" />
    </declare-styleable>
    
    <!-- The <code>activity-alias</code> tag declares a new
Loading