diff options
4 files changed, 25 insertions, 4 deletions
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt index a140eb8424a8..a8483308556d 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/enterprise/RestrictedMode.kt @@ -35,6 +35,7 @@ interface BlockedByAdmin : RestrictedMode { interface BlockedByEcm : RestrictedMode { fun showRestrictedSettingsDetails() + fun isBlockedByPhoneCall() = false } internal data class BlockedByAdminImpl( @@ -72,8 +73,13 @@ internal data class BlockedByEcmImpl( private val context: Context, private val intent: Intent, ) : BlockedByEcm { + private val reasonPhoneState = "phone_state" override fun showRestrictedSettingsDetails() { context.startActivity(intent) } + + override fun isBlockedByPhoneCall(): Boolean { + return intent.getStringExtra(Intent.EXTRA_REASON) == reasonPhoneState + } } diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt index 0bb92ce72595..fb4880f10d3e 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/preference/RestrictedSwitchPreferenceModel.kt @@ -163,9 +163,11 @@ internal class RestrictedSwitchPreferenceModel( is BlockedByAdmin -> restrictedMode.getSummary(checkedIfBlockedByAdmin ?: checkedIfNoRestricted()) - is BlockedByEcm -> + is BlockedByEcm -> if (restrictedMode.isBlockedByPhoneCall()) { + context.getString(com.android.settingslib.R.string.disabled_in_phone_call_text) + } else { context.getString(com.android.settingslib.R.string.disabled) - + } null -> context.getPlaceholder() } } diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 3da2271431f8..a3e42f1d1e51 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1228,6 +1228,8 @@ <!-- Summary for settings preference disabled by app ops [CHAR LIMIT=50] --> <string name="disabled_by_app_ops_text">Controlled by Restricted Setting</string> + <!-- Summary for settings preference disabled while the device is in a phone call [CHAR LIMIT=50] --> + <string name="disabled_in_phone_call_text">Unavailable during calls</string> <!-- [CHAR LIMIT=25] Manage applications, text telling using an application is disabled. --> <string name="disabled">Disabled</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java index 212e43aa4044..1044750bae25 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java @@ -44,6 +44,8 @@ import androidx.preference.PreferenceViewHolder; public class RestrictedPreferenceHelper { private static final String TAG = "RestrictedPreferenceHelper"; + private static final String REASON_PHONE_STATE = "phone_state"; + private final Context mContext; private final Preference mPreference; String packageName; @@ -121,7 +123,7 @@ public class RestrictedPreferenceHelper { if (mDisabledByAdmin) { summaryView.setText(disabledText); } else if (mDisabledByEcm) { - summaryView.setText(R.string.disabled_by_app_ops_text); + summaryView.setText(getEcmTextResId()); } else if (TextUtils.equals(disabledText, summaryView.getText())) { // It's previously set to disabled text, clear it. summaryView.setText(null); @@ -323,7 +325,16 @@ public class RestrictedPreferenceHelper { } if (!isEnabled && mDisabledByEcm) { - mPreference.setSummary(R.string.disabled_by_app_ops_text); + mPreference.setSummary(getEcmTextResId()); + } + } + + private int getEcmTextResId() { + if (mDisabledByEcmIntent != null && REASON_PHONE_STATE.equals( + mDisabledByEcmIntent.getStringExtra(Intent.EXTRA_REASON))) { + return R.string.disabled_in_phone_call_text; + } else { + return R.string.disabled_by_app_ops_text; } } |