diff options
| author | 2022-01-24 18:31:06 +0800 | |
|---|---|---|
| committer | 2022-02-11 15:41:35 +0800 | |
| commit | 1b75bfcb3fb74ac63f85cb034b8a2b83ff8f8801 (patch) | |
| tree | 912f8ea76dc9cd56c885045f9d009c4b72cfc0ba | |
| parent | cc9f89383fafcff0fdddcd5cd3106131f60aae5e (diff) | |
Add NEW_TASK flag to intent if metadata matches
This is a refactoring CL for the isNewTask() method. Before this CL we
check isNewTask() in different places. This CL tries to simplify the
logic by moving the check to where the intent is generated, so we don't have to
check the condition here and there.
Also did some minor refactoring.
Fixes: 216026158
Test: robotest
Change-Id: I3d8b4864e73fc49c83c46fc2d219b2b74c1ab5a4
3 files changed, 11 insertions, 8 deletions
diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java index b739ee62174d..98ea8b3449f8 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ActivityTile.java @@ -35,8 +35,7 @@ public class ActivityTile extends Tile { private static final String TAG = "ActivityTile"; public ActivityTile(ActivityInfo info, String category) { - super(info, category); - setMetaData(info.metaData); + super(info, category, info.metaData); } ActivityTile(Parcel in) { diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java index 312d30e2f2ad..54da585aba7a 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/ProviderTile.java @@ -43,8 +43,7 @@ public class ProviderTile extends Tile { private String mKey; public ProviderTile(ProviderInfo info, String category, Bundle metaData) { - super(info, category); - setMetaData(metaData); + super(info, category, metaData); mAuthority = info.authority; mKey = metaData.getString(META_DATA_PREFERENCE_KEYHINT); } diff --git a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java index 220cf6b5c38a..a0c8ac4e0a51 100644 --- a/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java +++ b/packages/SettingsLib/Tile/src/com/android/settingslib/drawer/Tile.java @@ -71,16 +71,19 @@ public abstract class Tile implements Parcelable { private Bundle mMetaData; private String mCategory; - public Tile(ComponentInfo info, String category) { + public Tile(ComponentInfo info, String category, Bundle metaData) { mComponentInfo = info; mComponentPackage = mComponentInfo.packageName; mComponentName = mComponentInfo.name; mCategory = category; + mMetaData = metaData; mIntent = new Intent().setClassName(mComponentPackage, mComponentName); + if (isNewTask()) { + mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + } } Tile(Parcel in) { - final boolean isProviderTile = in.readBoolean(); mComponentPackage = in.readString(); mComponentName = in.readString(); mIntent = new Intent().setClassName(mComponentPackage, mComponentName); @@ -90,6 +93,9 @@ public abstract class Tile implements Parcelable { } mCategory = in.readString(); mMetaData = in.readBundle(); + if (isNewTask()) { + mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + } } @Override @@ -332,8 +338,7 @@ public abstract class Tile implements Parcelable { /** * Whether the {@link Activity} should be launched in a separate task. */ - public boolean isNewTask(Context context) { - ensureMetadataNotStale(context); + public boolean isNewTask() { if (mMetaData != null && mMetaData.containsKey(META_DATA_NEW_TASK)) { return mMetaData.getBoolean(META_DATA_NEW_TASK); |