Fix different behaviors of deeplink in one/two pane am: a8c97980a6

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16339785

Change-Id: Ie2833c5b9b4f0f05a97432198a949050d3fb3e84
This commit is contained in:
Charles Chen
2021-11-29 05:02:31 +00:00
committed by Automerger Merge Worker
2 changed files with 26 additions and 23 deletions

View File

@@ -77,8 +77,8 @@ public class ActivityEmbeddingRulesController {
ComponentName primaryComponent,
ComponentName secondaryComponent,
String secondaryIntentAction,
boolean finishPrimaryWithSecondary,
boolean finishSecondaryWithPrimary,
int finishPrimaryWithSecondary,
int finishSecondaryWithPrimary,
boolean clearTop) {
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) {
return;
@@ -88,8 +88,8 @@ public class ActivityEmbeddingRulesController {
secondaryIntentAction));
SplitController.getInstance().registerRule(new SplitPairRule(filters,
finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary,
clearTop,
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
@@ -117,17 +117,8 @@ public class ActivityEmbeddingRulesController {
getComponentName(context, Settings.class),
secondaryComponent,
secondaryIntentAction,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary,
clearTop);
registerTwoPanePairRule(
context,
new ComponentName(context, DeepLinkHomepageActivity.class),
secondaryComponent,
secondaryIntentAction,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary,
finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
clearTop);
registerTwoPanePairRule(
@@ -135,8 +126,19 @@ public class ActivityEmbeddingRulesController {
getComponentName(context, SettingsHomepageActivity.class),
secondaryComponent,
secondaryIntentAction,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary,
finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
clearTop);
// We should finish HomePageActivity altogether even if it shows in single pane for all deep
// link cases.
registerTwoPanePairRule(
context,
new ComponentName(context, DeepLinkHomepageActivity.class),
secondaryComponent,
secondaryIntentAction,
finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
clearTop);
registerTwoPanePairRule(
@@ -144,8 +146,8 @@ public class ActivityEmbeddingRulesController {
getComponentName(context, SliceDeepLinkHomepageActivity.class),
secondaryComponent,
secondaryIntentAction,
finishPrimaryWithSecondary,
finishSecondaryWithPrimary,
finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
clearTop);
}

View File

@@ -40,6 +40,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.window.embedding.SplitRule;
import com.android.settings.R;
import com.android.settings.Settings;
@@ -338,15 +339,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements
new ComponentName(getApplicationContext(), getClass()),
targetComponentName,
targetIntent.getAction(),
true /* finishPrimaryWithSecondary */,
true /* finishSecondaryWithPrimary */,
SplitRule.FINISH_ALWAYS,
SplitRule.FINISH_ALWAYS,
true /* clearTop*/);
ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
new ComponentName(Settings.class.getPackageName(), Settings.class.getName()),
targetComponentName,
targetIntent.getAction(),
true /* finishPrimaryWithSecondary */,
true /* finishSecondaryWithPrimary */,
SplitRule.FINISH_ALWAYS,
SplitRule.FINISH_ALWAYS,
true /* clearTop*/);
startActivity(targetIntent);
}