Loading AndroidManifest.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1721,6 +1721,15 @@ android:value="true" /> </activity> <activity android:name=".Settings$FirmwareVersionActivity" android:label="@string/firmware_version" android:exported="true"> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_about_device"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> </activity> <activity android:name=".Settings$LockScreenSettingsActivity" android:label="@string/lockscreen_settings_title" Loading src/com/android/settings/CatalystSettingsActivity.kt 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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 import android.content.Intent import android.os.Bundle import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.preference.PreferenceFragment /** * Activity to load catalyst preference screen. * * @param bindingScreenKey preference screen key * @param fragmentClass fragment class to load the preference screen */ open class CatalystSettingsActivity @JvmOverloads constructor( private val bindingScreenKey: String, private val fragmentClass: Class<out PreferenceFragment> = CatalystFragment::class.java, ) : SettingsActivity() { override fun isValidFragment(fragmentName: String?) = fragmentName == fragmentClass.name override fun getInitialFragmentName(intent: Intent?): String = fragmentClass.name override fun getInitialFragmentArguments(intent: Intent?): Bundle? = Bundle().apply { putString(EXTRA_BINDING_SCREEN_KEY, bindingScreenKey) } } /** * Fragment to load catalyst preference screen. * * `PreferenceFragment` class is not used as it does not support highlighting specific preference. */ class CatalystFragment : SettingsPreferenceFragment() { override fun getMetricsCategory() = 0 override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { preferenceScreen = createPreferenceScreen() } } src/com/android/settings/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.biometrics.face.FaceSettings; import com.android.settings.communal.CommunalPreferenceController; import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionScreen; import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.network.MobileNetworkIntentConverter; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -116,6 +117,11 @@ public class Settings extends SettingsActivity { public static class NightDisplaySuggestionActivity extends NightDisplaySettingsActivity { /* empty */ } public static class SmartAutoRotateSettingsActivity extends SettingsActivity { /* empty */ } public static class MyDeviceInfoActivity extends SettingsActivity { /* empty */ } public static class FirmwareVersionActivity extends CatalystSettingsActivity { public FirmwareVersionActivity() { super(FirmwareVersionScreen.KEY); } } public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ } public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ } public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ } Loading src/com/android/settings/SettingsActivity.java +9 −3 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ public class SettingsActivity extends SettingsBaseActivity int category = SettingsEnums.PAGE_UNKNOWN; Bundle args = null; if (getIntent() != null) { args = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); args = getInitialFragmentArguments(getIntent()); } Fragment fragment = Utils.getTargetFragment(this, getMetricsTag(), args); Loading Loading @@ -502,6 +502,12 @@ public class SettingsActivity extends SettingsBaseActivity return intent.getStringExtra(EXTRA_SHOW_FRAGMENT); } /** Returns the arguments to initial fragment that the activity will launch. */ @VisibleForTesting public @Nullable Bundle getInitialFragmentArguments(Intent intent) { return intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); } @Override protected void onApplyThemeResource(Theme theme, int resid, boolean first) { theme.applyStyle(R.style.SetupWizardPartnerResource, true); Loading Loading @@ -542,7 +548,7 @@ public class SettingsActivity extends SettingsBaseActivity setTitleFromIntent(intent); Bundle initialArguments = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); Bundle initialArguments = getInitialFragmentArguments(intent); switchToFragment(initialFragmentName, initialArguments, true, mInitialTitleResId, mInitialTitle); } else { Loading Loading @@ -679,7 +685,7 @@ public class SettingsActivity extends SettingsBaseActivity if (startingFragment != null) { Intent modIntent = new Intent(superIntent); modIntent.putExtra(EXTRA_SHOW_FRAGMENT, startingFragment); Bundle args = superIntent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); Bundle args = getInitialFragmentArguments(superIntent); if (args != null) { args = new Bundle(args); } else { Loading src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreference.kt +3 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.preference.Preference import com.android.internal.app.PlatLogoActivity import com.android.settings.R import com.android.settings.Utils import com.android.settings.contract.TAG_DEVICE_STATE_PREFERENCE import com.android.settingslib.RestrictedLockUtils import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.metadata.PreferenceMetadata Loading @@ -47,6 +48,8 @@ class FirmwareVersionDetailPreference : override val title: Int get() = R.string.firmware_version override fun tags(context: Context) = arrayOf(TAG_DEVICE_STATE_PREFERENCE) override fun isIndexable(context: Context) = false override fun intent(context: Context): Intent? = Loading Loading
AndroidManifest.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1721,6 +1721,15 @@ android:value="true" /> </activity> <activity android:name=".Settings$FirmwareVersionActivity" android:label="@string/firmware_version" android:exported="true"> <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" android:value="@string/menu_key_about_device"/> <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" android:value="true" /> </activity> <activity android:name=".Settings$LockScreenSettingsActivity" android:label="@string/lockscreen_settings_title" Loading
src/com/android/settings/CatalystSettingsActivity.kt 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 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 import android.content.Intent import android.os.Bundle import com.android.settingslib.metadata.EXTRA_BINDING_SCREEN_KEY import com.android.settingslib.preference.PreferenceFragment /** * Activity to load catalyst preference screen. * * @param bindingScreenKey preference screen key * @param fragmentClass fragment class to load the preference screen */ open class CatalystSettingsActivity @JvmOverloads constructor( private val bindingScreenKey: String, private val fragmentClass: Class<out PreferenceFragment> = CatalystFragment::class.java, ) : SettingsActivity() { override fun isValidFragment(fragmentName: String?) = fragmentName == fragmentClass.name override fun getInitialFragmentName(intent: Intent?): String = fragmentClass.name override fun getInitialFragmentArguments(intent: Intent?): Bundle? = Bundle().apply { putString(EXTRA_BINDING_SCREEN_KEY, bindingScreenKey) } } /** * Fragment to load catalyst preference screen. * * `PreferenceFragment` class is not used as it does not support highlighting specific preference. */ class CatalystFragment : SettingsPreferenceFragment() { override fun getMetricsCategory() = 0 override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { preferenceScreen = createPreferenceScreen() } }
src/com/android/settings/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.biometrics.face.FaceSettings; import com.android.settings.communal.CommunalPreferenceController; import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionScreen; import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.network.MobileNetworkIntentConverter; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -116,6 +117,11 @@ public class Settings extends SettingsActivity { public static class NightDisplaySuggestionActivity extends NightDisplaySettingsActivity { /* empty */ } public static class SmartAutoRotateSettingsActivity extends SettingsActivity { /* empty */ } public static class MyDeviceInfoActivity extends SettingsActivity { /* empty */ } public static class FirmwareVersionActivity extends CatalystSettingsActivity { public FirmwareVersionActivity() { super(FirmwareVersionScreen.KEY); } } public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ } public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ } public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ } Loading
src/com/android/settings/SettingsActivity.java +9 −3 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ public class SettingsActivity extends SettingsBaseActivity int category = SettingsEnums.PAGE_UNKNOWN; Bundle args = null; if (getIntent() != null) { args = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); args = getInitialFragmentArguments(getIntent()); } Fragment fragment = Utils.getTargetFragment(this, getMetricsTag(), args); Loading Loading @@ -502,6 +502,12 @@ public class SettingsActivity extends SettingsBaseActivity return intent.getStringExtra(EXTRA_SHOW_FRAGMENT); } /** Returns the arguments to initial fragment that the activity will launch. */ @VisibleForTesting public @Nullable Bundle getInitialFragmentArguments(Intent intent) { return intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); } @Override protected void onApplyThemeResource(Theme theme, int resid, boolean first) { theme.applyStyle(R.style.SetupWizardPartnerResource, true); Loading Loading @@ -542,7 +548,7 @@ public class SettingsActivity extends SettingsBaseActivity setTitleFromIntent(intent); Bundle initialArguments = intent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); Bundle initialArguments = getInitialFragmentArguments(intent); switchToFragment(initialFragmentName, initialArguments, true, mInitialTitleResId, mInitialTitle); } else { Loading Loading @@ -679,7 +685,7 @@ public class SettingsActivity extends SettingsBaseActivity if (startingFragment != null) { Intent modIntent = new Intent(superIntent); modIntent.putExtra(EXTRA_SHOW_FRAGMENT, startingFragment); Bundle args = superIntent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); Bundle args = getInitialFragmentArguments(superIntent); if (args != null) { args = new Bundle(args); } else { Loading
src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreference.kt +3 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.preference.Preference import com.android.internal.app.PlatLogoActivity import com.android.settings.R import com.android.settings.Utils import com.android.settings.contract.TAG_DEVICE_STATE_PREFERENCE import com.android.settingslib.RestrictedLockUtils import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.metadata.PreferenceMetadata Loading @@ -47,6 +48,8 @@ class FirmwareVersionDetailPreference : override val title: Int get() = R.string.firmware_version override fun tags(context: Context) = arrayOf(TAG_DEVICE_STATE_PREFERENCE) override fun isIndexable(context: Context) = false override fun intent(context: Context): Intent? = Loading