[Large screen] Set alwaysExpand for SearchActivity.

Set alwaysExpand and SearchActivity will show in full screen.

Bug: 196923591
Test: manual
      Settings -> Search settings
Change-Id: I4174753bce15232342fa69d0845225a95d757782
This commit is contained in:
Arc Wang
2021-09-27 23:06:02 +08:00
parent d754409050
commit 28cdf73cf7

View File

@@ -17,6 +17,7 @@
package com.android.settings.activityembedding; package com.android.settings.activityembedding;
import android.app.Activity; import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -25,6 +26,7 @@ import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.window.embedding.ActivityFilter; import androidx.window.embedding.ActivityFilter;
import androidx.window.embedding.ActivityRule;
import androidx.window.embedding.SplitController; import androidx.window.embedding.SplitController;
import androidx.window.embedding.SplitPairFilter; import androidx.window.embedding.SplitPairFilter;
import androidx.window.embedding.SplitPairRule; import androidx.window.embedding.SplitPairRule;
@@ -34,6 +36,7 @@ import com.android.settings.Settings;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity;
import com.android.settings.overlay.FeatureFactory;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@@ -70,6 +73,8 @@ public class ActivityEmbeddingRulesController {
null /* secondaryIntentAction */, null /* secondaryIntentAction */,
true /* finishPrimaryWithSecondary */, true /* finishPrimaryWithSecondary */,
true /* finishSecondaryWithPrimary */); true /* finishSecondaryWithPrimary */);
// Set rules here to show full screen for specified Activity.
registerAlwaysExpandRule();
} }
/** Register a SplitPairRule for 2-pane. */ /** Register a SplitPairRule for 2-pane. */
@@ -85,21 +90,31 @@ public class ActivityEmbeddingRulesController {
SplitController.getInstance().registerRule(new SplitPairRule(filters, SplitController.getInstance().registerRule(new SplitPairRule(filters,
finishPrimaryWithSecondary, finishPrimaryWithSecondary,
finishSecondaryWithPrimary, true /* clearTop */, finishSecondaryWithPrimary,
true /* clearTop */,
ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
ActivityEmbeddingUtils.SPLIT_RATIO, ActivityEmbeddingUtils.SPLIT_RATIO,
LayoutDirection.LOCALE)); LayoutDirection.LOCALE));
} }
private void registerAlwaysExpandRule() {
final Set<ActivityFilter> activityFilters = new HashSet<>();
final Intent searchIntent = FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
.buildSearchIntent(mContext, SettingsEnums.SETTINGS_HOMEPAGE);
addActivityFilter(activityFilters, searchIntent);
mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */));
}
private void registerHomepagePlaceholderRule() { private void registerHomepagePlaceholderRule() {
final Set<ActivityFilter> activityFilters = new HashSet<>(); final Set<ActivityFilter> activityFilters = new HashSet<>();
activityFilters.add(new ActivityFilter(getComponentName(SettingsHomepageActivity.class), addActivityFilter(activityFilters, SettingsHomepageActivity.class);
null /* intentAction */)); addActivityFilter(activityFilters, Settings.class);
activityFilters.add(new ActivityFilter(getComponentName(Settings.class), addActivityFilter(activityFilters, new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
null /* intentAction */)); SettingsHomepageActivity.ALIAS_DEEP_LINK));
activityFilters.add(new ActivityFilter(new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
SettingsHomepageActivity.ALIAS_DEEP_LINK), null /* intentAction */));
final Intent intent = new Intent(); final Intent intent = new Intent();
intent.setComponent(getComponentName(Settings.NetworkDashboardActivity.class)); intent.setComponent(getComponentName(Settings.NetworkDashboardActivity.class));
final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule( final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
@@ -113,6 +128,22 @@ public class ActivityEmbeddingRulesController {
mSplitController.registerRule(placeholderRule); mSplitController.registerRule(placeholderRule);
} }
private void addActivityFilter(Set<ActivityFilter> activityFilters,
Class<? extends Activity> activityClass) {
activityFilters.add(new ActivityFilter(getComponentName(activityClass),
null /* intentAction */));
}
private void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) {
activityFilters.add(new ActivityFilter(new ComponentName("*" /* pkg */, "*" /* cls */),
intent.getAction()));
}
private void addActivityFilter(Set<ActivityFilter> activityFilters,
ComponentName componentName) {
activityFilters.add(new ActivityFilter(componentName, null /* intentAction */));
}
@NonNull @NonNull
private ComponentName getComponentName(Class<? extends Activity> activityClass) { private ComponentName getComponentName(Class<? extends Activity> activityClass) {
return new ComponentName(mContext.getPackageName(), activityClass.getName()); return new ComponentName(mContext.getPackageName(), activityClass.getName());