[Large screen] Check if it's in 2-pane before 2-pane deep link flow
The callback of SplitStateObserver.SplitStateListener can have one
or more active splits when there is already 2-pane in Activity stack.
This change prevent unnecessary 2-pane deep link flow if the Activity
is already in 2-pane activity stack.
This solution does not work if the Activity was started in a new task.
(e.g., Intent.FLAG_ACTIVITY_NEW_TASK, launchMode singleTask).
Bug: 201379454
Bug: 201620626
Bug: 204398432
Bug: 204397936
Bug: 197609195
Bug: 197609197
Bug: 204501179
Bug: 204959335
Bug: 204845334
Test: manual
1. Settings -> Apps > Default apps > Opening links.
2. Click back button should back to Default apps page.
Change-Id: I04aaceed47a8f2754a4e17c53b49252f61e0a1d1
This commit is contained in:
@@ -63,10 +63,6 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
|
||||
private static final String TAG = "SettingsHomepageActivity";
|
||||
|
||||
// Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK.
|
||||
// Put true value to the intent when startActivity for a deep link intent from this Activity.
|
||||
public static final String EXTRA_IS_FROM_SETTINGS_HOMEPAGE = "is_from_settings_homepage";
|
||||
|
||||
// Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK.
|
||||
// Set & get Uri of the Intent separately to prevent failure of Intent#ParseUri.
|
||||
public static final String EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA =
|
||||
@@ -268,11 +264,11 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
// Sender of intent may want to send intent extra data to the destination of targetIntent.
|
||||
targetIntent.replaceExtras(intent);
|
||||
|
||||
targetIntent.putExtra(EXTRA_IS_FROM_SETTINGS_HOMEPAGE, true);
|
||||
targetIntent.putExtra(SettingsActivity.EXTRA_IS_FROM_SLICE, false);
|
||||
|
||||
targetIntent.setData(intent.getParcelableExtra(
|
||||
SettingsHomepageActivity.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA));
|
||||
|
||||
// Set 2-pane pair rule for the deep link page.
|
||||
ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
|
||||
getDeepLinkComponent(),
|
||||
|
||||
Reference in New Issue
Block a user