Create "Manage PIN" settings UI menu

Test: atest SupervisionPinManagementScreenTest
Test: manually on real device
Bug: 390186179
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Change-Id: Ib53dce2a32fe9551e8877145a61c8834505d389d
This commit is contained in:
Zhou Liu
2025-01-24 05:34:18 +00:00
parent 7e6cc163d9
commit 82356f6e93
5 changed files with 132 additions and 0 deletions

View File

@@ -60,6 +60,7 @@ class SupervisionDashboardScreen : PreferenceScreenCreator {
+TitlelessPreferenceGroup("supervision_features_group_1") += {
// Empty category for dynamic injection targeting.
}
+SupervisionPinManagementScreen.KEY
}
companion object {

View File

@@ -0,0 +1,29 @@
/*
* 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.supervision
import android.content.Context
import com.android.settingslib.preference.PreferenceFragment
/**
* Fragment to display the Supervision PIN management page (Settings > Supervision > Manage PIN).
*
* See [SupervisionPinManagementScreen] for details on the page contents.
*/
class SupervisionPinManagementFragment : PreferenceFragment() {
override fun getPreferenceScreenBindingKey(context: Context) =
SupervisionPinManagementScreen.KEY
}

View File

@@ -0,0 +1,51 @@
/*
* 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.supervision
import android.content.Context
import com.android.settings.R
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
/** Pin Management landing page (Settings > Supervision > Manage Pin). */
@ProvidePreferenceScreen(SupervisionPinManagementScreen.KEY)
class SupervisionPinManagementScreen : PreferenceScreenCreator {
override val key: String
get() = KEY
override val title: Int
get() = R.string.supervision_pin_management_preference_title
// TODO(b/391994031): dynamically update the summary according to PIN status.
override val summary: Int
get() = R.string.supervision_pin_management_preference_summary_add
// TODO(b/391994031): dynamically update the icon according to PIN status.
override val icon: Int
get() = R.drawable.ic_pin
override fun fragmentClass() = SupervisionPinManagementFragment::class.java
override fun getPreferenceHierarchy(context: Context) =
preferenceHierarchy(context, this) {
// TODO(b/391992481) implement the screen.
}
companion object {
const val KEY = "supervision_pin_management"
}
}