[Settings] User restriction should be applied

Simply verify isAdminUser() could be insufficient, since there're some
other use cases (such as managed device).

Bug: 228079419
Test: local

Change-Id: Ic9f27deafada31dacef03e27bf02ecbc9a8b3231
This commit is contained in:
Bonian Chen
2023-02-13 02:07:23 +00:00
parent 6f76d5dc91
commit ceaa5cd7ae
2 changed files with 85 additions and 3 deletions

View File

@@ -17,27 +17,41 @@
package com.android.settings;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.os.UserManager;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceScreen;
import com.android.settings.network.telephony.MobileNetworkUtils;
public class TestingSettings extends SettingsPreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.testing_settings);
final UserManager um = UserManager.get(getContext());
if (!um.isAdminUser()) {
if (!isRadioInfoVisible(getContext())) {
PreferenceScreen preferenceScreen = (PreferenceScreen)
findPreference("radio_info_settings");
getPreferenceScreen().removePreference(preferenceScreen);
}
}
@VisibleForTesting
protected boolean isRadioInfoVisible(Context context) {
UserManager um = context.getSystemService(UserManager.class);
if (um != null) {
if (!um.isAdminUser()) {
return false;
}
}
return !MobileNetworkUtils.isMobileNetworkUserRestricted(context);
}
@Override
public int getMetricsCategory() {
return SettingsEnums.TESTING;