Loading AndroidManifest.xml +37 −13 Original line number Original line Diff line number Diff line Loading @@ -129,7 +129,6 @@ <uses-library android:name="androidx.window.sidecar" android:required="false"/> <uses-library android:name="androidx.window.sidecar" android:required="false"/> <!-- Settings --> <!-- Settings --> <activity android:name=".homepage.SettingsHomepageActivity" <activity android:name=".homepage.SettingsHomepageActivity" android:label="@string/settings_label_launcher" android:label="@string/settings_label_launcher" android:theme="@style/Theme.Settings.Home" android:theme="@style/Theme.Settings.Home" Loading @@ -145,18 +144,15 @@ android:value="true" /> android:value="true" /> </activity> </activity> <activity android:name=".network.telephony.MobileNetworkActivity" <activity android:name=".homepage.SliceDeepLinkHomepageActivity" android:label="@string/network_settings_title" android:label="@string/settings_label_launcher" android:exported="true" android:theme="@style/Theme.Settings.Home" android:launchMode="singleTask"> android:taskAffinity="" <intent-filter android:priority="1"> android:launchMode="singleTask" <!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. --> android:exported="false" <action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" /> android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout"> <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" /> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <action android:name="android.settings.DATA_ROAMING_SETTINGS" /> android:value="true" /> <action android:name="android.settings.MMS_MESSAGE_SETTING" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </activity> <!-- Alias for launcher activity only, as this belongs to each profile. --> <!-- Alias for launcher activity only, as this belongs to each profile. --> Loading Loading @@ -234,6 +230,20 @@ android:value="true" /> android:value="true" /> </activity> </activity> <activity android:name=".network.telephony.MobileNetworkActivity" android:label="@string/network_settings_title" android:exported="true" android:launchMode="singleTask"> <intent-filter android:priority="1"> <!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. --> <action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" /> <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" /> <action android:name="android.settings.DATA_ROAMING_SETTINGS" /> <action android:name="android.settings.MMS_MESSAGE_SETTING" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".Settings$MobileNetworkListActivity" <activity android:name=".Settings$MobileNetworkListActivity" android:exported="true" android:exported="true" android:label="@string/network_settings_title"> android:label="@string/network_settings_title"> Loading Loading @@ -2546,6 +2556,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" /> android:value="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_battery"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> android:value="true" /> </activity> </activity> Loading @@ -2571,6 +2583,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.AccountSyncSettings" /> android:value="com.android.settings.accounts.AccountSyncSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> android:value="true" /> </activity> </activity> Loading @@ -2585,6 +2599,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.ManagedProfileSettings" /> android:value="com.android.settings.accounts.ManagedProfileSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> </activity> </activity> <activity <activity Loading @@ -2605,6 +2621,8 @@ android:configChanges="orientation|keyboardHidden|screenSize"> android:configChanges="orientation|keyboardHidden|screenSize"> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.ChooseAccountFragment" /> android:value="com.android.settings.accounts.ChooseAccountFragment" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> </activity> </activity> <activity android:name=".CryptKeeper" <activity android:name=".CryptKeeper" Loading Loading @@ -2663,6 +2681,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.security.CryptKeeperSettings" /> android:value="com.android.settings.security.CryptKeeperSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_security"/> </activity> </activity> <activity <activity Loading @@ -2680,6 +2700,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.datausage.DataUsageSummary" /> android:value="com.android.settings.datausage.DataUsageSummary" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_network"/> </activity> </activity> <activity <activity android:name="Settings$MobileDataUsageListActivity" android:name="Settings$MobileDataUsageListActivity" Loading @@ -2691,6 +2713,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.datausage.DataUsageList" /> android:value="com.android.settings.datausage.DataUsageList" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_network"/> </activity> </activity> <activity <activity Loading src/com/android/settings/SettingsActivity.java +43 −7 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings; package com.android.settings; import static android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY; import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY; import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI; import static com.android.settings.applications.appinfo.AppButtonsPreferenceController.KEY_REMOVE_TASK_WHEN_FINISHING; import static com.android.settings.applications.appinfo.AppButtonsPreferenceController.KEY_REMOVE_TASK_WHEN_FINISHING; import android.app.ActionBar; import android.app.ActionBar; Loading Loading @@ -61,6 +65,7 @@ import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SliceDeepLinkHomepageActivity; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.wfd.WifiDisplaySettings; Loading Loading @@ -139,6 +144,12 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = ":settings:show_fragment_as_subsetting"; ":settings:show_fragment_as_subsetting"; /** * Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK. * Set true when the deep link intent is from a slice */ public static final String EXTRA_IS_FROM_SLICE = "is_from_slice"; /** /** * Personal or Work profile tab of {@link ProfileSelectFragment} * Personal or Work profile tab of {@link ProfileSelectFragment} * <p>0: Personal tab. * <p>0: Personal tab. Loading Loading @@ -363,15 +374,34 @@ public class SettingsActivity extends SettingsBaseActivity return false; return false; } } final Intent detailIntent = new Intent(intent); // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. final Intent trampolineIntent = final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); new Intent(android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); trampolineIntent.replaceExtras(intent); trampolineIntent.replaceExtras(detailIntent); trampolineIntent.putExtra( android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI, // Relay detail intent data to prevent failure of Intent#ParseUri. intent.toUri(Intent.URI_INTENT_SCHEME)); // If Intent#getData() is not null, Intent#toUri will return an Uri which has the scheme of // Intent#getData() and it may not be the scheme of an Intent. trampolineIntent.putExtra( trampolineIntent.putExtra( android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY, SettingsHomepageActivity.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA, detailIntent.getData()); detailIntent.setData(null); trampolineIntent.putExtra(EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI, detailIntent.toUri(Intent.URI_INTENT_SCHEME)); if (detailIntent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { trampolineIntent.setClass(this, SliceDeepLinkHomepageActivity.class); // Get menu key for slice deep link case. final String highlightMenuKey = detailIntent.getStringExtra( EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY); if (!TextUtils.isEmpty(highlightMenuKey)) { mHighlightMenuKey = highlightMenuKey; } } trampolineIntent.putExtra(EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY, mHighlightMenuKey); mHighlightMenuKey); trampolineIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); trampolineIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(trampolineIntent); startActivity(trampolineIntent); Loading @@ -391,6 +421,12 @@ public class SettingsActivity extends SettingsBaseActivity return false; return false; } } if (intent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { // Slice deep link starts the Intent using SubSettingLauncher. Returns true to show // 2-pane deep link. return true; } if (isSubSettings(intent)) { if (isSubSettings(intent)) { return false; return false; } } Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +1 −6 Original line number Original line Diff line number Diff line Loading @@ -128,11 +128,6 @@ public class ActivityEmbeddingRulesController { null /* intentAction */)); 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, private void addActivityFilter(Set<ActivityFilter> activityFilters, ComponentName componentName) { ComponentName componentName) { activityFilters.add(new ActivityFilter(componentName, null /* intentAction */)); activityFilters.add(new ActivityFilter(componentName, null /* intentAction */)); Loading src/com/android/settings/homepage/SettingsHomepageActivity.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -61,9 +61,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements private static final String TAG = "SettingsHomepageActivity"; 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. // 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"; 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 = "settings_large_screen_deep_link_intent_data"; // An alias class name of SettingsHomepageActivity. // An alias class name of SettingsHomepageActivity. public static final String ALIAS_DEEP_LINK = "com.android.settings.DeepLinkHomepageActivity"; public static final String ALIAS_DEEP_LINK = "com.android.settings.DeepLinkHomepageActivity"; Loading Loading @@ -232,10 +238,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements targetIntent.replaceExtras(intent); targetIntent.replaceExtras(intent); targetIntent.putExtra(EXTRA_IS_FROM_SETTINGS_HOMEPAGE, true); 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. // Set 2-pane pair rule for the deep link page. ActivityEmbeddingRulesController.registerTwoPanePairRule(this, ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(Utils.SETTINGS_PACKAGE_NAME, ALIAS_DEEP_LINK), getDeepLinkComponent(), targetComponentName, targetComponentName, targetIntent.getAction(), targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishPrimaryWithSecondary */, Loading @@ -251,6 +260,10 @@ public class SettingsHomepageActivity extends FragmentActivity implements startActivity(targetIntent); startActivity(targetIntent); } } protected ComponentName getDeepLinkComponent() { return new ComponentName(Utils.SETTINGS_PACKAGE_NAME, ALIAS_DEEP_LINK); } private String getHighlightMenuKey() { private String getHighlightMenuKey() { final Intent intent = getIntent(); final Intent intent = getIntent(); if (intent != null && TextUtils.equals(intent.getAction(), if (intent != null && TextUtils.equals(intent.getAction(), Loading src/com/android/settings/homepage/SliceDeepLinkHomepageActivity.java 0 → 100644 +27 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.homepage; import android.content.ComponentName; /** Activity for Slices to launch Settings deep link page */ public class SliceDeepLinkHomepageActivity extends SettingsHomepageActivity { @Override protected ComponentName getDeepLinkComponent() { return new ComponentName(getApplicationContext(), getClass()); } } Loading
AndroidManifest.xml +37 −13 Original line number Original line Diff line number Diff line Loading @@ -129,7 +129,6 @@ <uses-library android:name="androidx.window.sidecar" android:required="false"/> <uses-library android:name="androidx.window.sidecar" android:required="false"/> <!-- Settings --> <!-- Settings --> <activity android:name=".homepage.SettingsHomepageActivity" <activity android:name=".homepage.SettingsHomepageActivity" android:label="@string/settings_label_launcher" android:label="@string/settings_label_launcher" android:theme="@style/Theme.Settings.Home" android:theme="@style/Theme.Settings.Home" Loading @@ -145,18 +144,15 @@ android:value="true" /> android:value="true" /> </activity> </activity> <activity android:name=".network.telephony.MobileNetworkActivity" <activity android:name=".homepage.SliceDeepLinkHomepageActivity" android:label="@string/network_settings_title" android:label="@string/settings_label_launcher" android:exported="true" android:theme="@style/Theme.Settings.Home" android:launchMode="singleTask"> android:taskAffinity="" <intent-filter android:priority="1"> android:launchMode="singleTask" <!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. --> android:exported="false" <action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" /> android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout"> <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" /> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <action android:name="android.settings.DATA_ROAMING_SETTINGS" /> android:value="true" /> <action android:name="android.settings.MMS_MESSAGE_SETTING" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </activity> <!-- Alias for launcher activity only, as this belongs to each profile. --> <!-- Alias for launcher activity only, as this belongs to each profile. --> Loading Loading @@ -234,6 +230,20 @@ android:value="true" /> android:value="true" /> </activity> </activity> <activity android:name=".network.telephony.MobileNetworkActivity" android:label="@string/network_settings_title" android:exported="true" android:launchMode="singleTask"> <intent-filter android:priority="1"> <!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. --> <action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" /> <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" /> <action android:name="android.settings.DATA_ROAMING_SETTINGS" /> <action android:name="android.settings.MMS_MESSAGE_SETTING" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".Settings$MobileNetworkListActivity" <activity android:name=".Settings$MobileNetworkListActivity" android:exported="true" android:exported="true" android:label="@string/network_settings_title"> android:label="@string/network_settings_title"> Loading Loading @@ -2546,6 +2556,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" /> android:value="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_battery"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> android:value="true" /> </activity> </activity> Loading @@ -2571,6 +2583,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.AccountSyncSettings" /> android:value="com.android.settings.accounts.AccountSyncSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> android:value="true" /> </activity> </activity> Loading @@ -2585,6 +2599,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.ManagedProfileSettings" /> android:value="com.android.settings.accounts.ManagedProfileSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> </activity> </activity> <activity <activity Loading @@ -2605,6 +2621,8 @@ android:configChanges="orientation|keyboardHidden|screenSize"> android:configChanges="orientation|keyboardHidden|screenSize"> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.accounts.ChooseAccountFragment" /> android:value="com.android.settings.accounts.ChooseAccountFragment" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_accounts"/> </activity> </activity> <activity android:name=".CryptKeeper" <activity android:name=".CryptKeeper" Loading Loading @@ -2663,6 +2681,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.security.CryptKeeperSettings" /> android:value="com.android.settings.security.CryptKeeperSettings" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_security"/> </activity> </activity> <activity <activity Loading @@ -2680,6 +2700,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.datausage.DataUsageSummary" /> android:value="com.android.settings.datausage.DataUsageSummary" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_network"/> </activity> </activity> <activity <activity android:name="Settings$MobileDataUsageListActivity" android:name="Settings$MobileDataUsageListActivity" Loading @@ -2691,6 +2713,8 @@ </intent-filter> </intent-filter> <meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:value="com.android.settings.datausage.DataUsageList" /> android:value="com.android.settings.datausage.DataUsageList" /> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_network"/> </activity> </activity> <activity <activity Loading
src/com/android/settings/SettingsActivity.java +43 −7 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings; package com.android.settings; import static android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY; import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY; import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI; import static com.android.settings.applications.appinfo.AppButtonsPreferenceController.KEY_REMOVE_TASK_WHEN_FINISHING; import static com.android.settings.applications.appinfo.AppButtonsPreferenceController.KEY_REMOVE_TASK_WHEN_FINISHING; import android.app.ActionBar; import android.app.ActionBar; Loading Loading @@ -61,6 +65,7 @@ import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SliceDeepLinkHomepageActivity; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory; import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.wfd.WifiDisplaySettings; Loading Loading @@ -139,6 +144,12 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = ":settings:show_fragment_as_subsetting"; ":settings:show_fragment_as_subsetting"; /** * Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK. * Set true when the deep link intent is from a slice */ public static final String EXTRA_IS_FROM_SLICE = "is_from_slice"; /** /** * Personal or Work profile tab of {@link ProfileSelectFragment} * Personal or Work profile tab of {@link ProfileSelectFragment} * <p>0: Personal tab. * <p>0: Personal tab. Loading Loading @@ -363,15 +374,34 @@ public class SettingsActivity extends SettingsBaseActivity return false; return false; } } final Intent detailIntent = new Intent(intent); // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. // It's a deep link intent, SettingsHomepageActivity will set SplitPairRule and start it. final Intent trampolineIntent = final Intent trampolineIntent = new Intent(ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); new Intent(android.provider.Settings.ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY); trampolineIntent.replaceExtras(intent); trampolineIntent.replaceExtras(detailIntent); trampolineIntent.putExtra( android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI, // Relay detail intent data to prevent failure of Intent#ParseUri. intent.toUri(Intent.URI_INTENT_SCHEME)); // If Intent#getData() is not null, Intent#toUri will return an Uri which has the scheme of // Intent#getData() and it may not be the scheme of an Intent. trampolineIntent.putExtra( trampolineIntent.putExtra( android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY, SettingsHomepageActivity.EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA, detailIntent.getData()); detailIntent.setData(null); trampolineIntent.putExtra(EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI, detailIntent.toUri(Intent.URI_INTENT_SCHEME)); if (detailIntent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { trampolineIntent.setClass(this, SliceDeepLinkHomepageActivity.class); // Get menu key for slice deep link case. final String highlightMenuKey = detailIntent.getStringExtra( EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY); if (!TextUtils.isEmpty(highlightMenuKey)) { mHighlightMenuKey = highlightMenuKey; } } trampolineIntent.putExtra(EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY, mHighlightMenuKey); mHighlightMenuKey); trampolineIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); trampolineIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(trampolineIntent); startActivity(trampolineIntent); Loading @@ -391,6 +421,12 @@ public class SettingsActivity extends SettingsBaseActivity return false; return false; } } if (intent.getBooleanExtra(EXTRA_IS_FROM_SLICE, false)) { // Slice deep link starts the Intent using SubSettingLauncher. Returns true to show // 2-pane deep link. return true; } if (isSubSettings(intent)) { if (isSubSettings(intent)) { return false; return false; } } Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +1 −6 Original line number Original line Diff line number Diff line Loading @@ -128,11 +128,6 @@ public class ActivityEmbeddingRulesController { null /* intentAction */)); 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, private void addActivityFilter(Set<ActivityFilter> activityFilters, ComponentName componentName) { ComponentName componentName) { activityFilters.add(new ActivityFilter(componentName, null /* intentAction */)); activityFilters.add(new ActivityFilter(componentName, null /* intentAction */)); Loading
src/com/android/settings/homepage/SettingsHomepageActivity.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -61,9 +61,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements private static final String TAG = "SettingsHomepageActivity"; 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. // 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"; 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 = "settings_large_screen_deep_link_intent_data"; // An alias class name of SettingsHomepageActivity. // An alias class name of SettingsHomepageActivity. public static final String ALIAS_DEEP_LINK = "com.android.settings.DeepLinkHomepageActivity"; public static final String ALIAS_DEEP_LINK = "com.android.settings.DeepLinkHomepageActivity"; Loading Loading @@ -232,10 +238,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements targetIntent.replaceExtras(intent); targetIntent.replaceExtras(intent); targetIntent.putExtra(EXTRA_IS_FROM_SETTINGS_HOMEPAGE, true); 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. // Set 2-pane pair rule for the deep link page. ActivityEmbeddingRulesController.registerTwoPanePairRule(this, ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(Utils.SETTINGS_PACKAGE_NAME, ALIAS_DEEP_LINK), getDeepLinkComponent(), targetComponentName, targetComponentName, targetIntent.getAction(), targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishPrimaryWithSecondary */, Loading @@ -251,6 +260,10 @@ public class SettingsHomepageActivity extends FragmentActivity implements startActivity(targetIntent); startActivity(targetIntent); } } protected ComponentName getDeepLinkComponent() { return new ComponentName(Utils.SETTINGS_PACKAGE_NAME, ALIAS_DEEP_LINK); } private String getHighlightMenuKey() { private String getHighlightMenuKey() { final Intent intent = getIntent(); final Intent intent = getIntent(); if (intent != null && TextUtils.equals(intent.getAction(), if (intent != null && TextUtils.equals(intent.getAction(), Loading
src/com/android/settings/homepage/SliceDeepLinkHomepageActivity.java 0 → 100644 +27 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.homepage; import android.content.ComponentName; /** Activity for Slices to launch Settings deep link page */ public class SliceDeepLinkHomepageActivity extends SettingsHomepageActivity { @Override protected ComponentName getDeepLinkComponent() { return new ComponentName(getApplicationContext(), getClass()); } }