Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -3602,6 +3602,8 @@ <string name="accessibility_feature_state_on">On</string> <!-- Summary for the disabled state of an accessibility feature. [CHAR LIMIT=10] --> <string name="accessibility_feature_state_off">Off</string> <!-- Summary when an accessibility feature or ime is not permitted. [CHAR LIMIT=40] --> <string name="accessibility_feature_or_input_method_not_allowed">Not allowed by your organization</string> <!-- Title for the preference category containing the video caption preview. [CHAR LIMIT=35] --> <string name="captioning_preview_title">Preview</string> Loading src/com/android/settings/accessibility/AccessibilitySettings.java +25 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.accessibility; import android.accessibilityservice.AccessibilityServiceInfo; import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; Loading @@ -28,6 +29,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; Loading Loading @@ -197,11 +199,15 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements private int mLongPressTimeoutDefault; private DevicePolicyManager mDpm; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.accessibility_settings); initializeAllPreferences(); mDpm = (DevicePolicyManager) (getActivity() .getSystemService(Context.DEVICE_POLICY_SERVICE)); } @Override Loading Loading @@ -434,7 +440,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements accessibilityManager.getInstalledAccessibilityServiceList(); Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings( getActivity()); List<String> permittedServices = mDpm.getPermittedAccessibilityServices( UserHandle.myUserId()); final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; Loading @@ -454,11 +461,26 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements preference.setTitle(title); final boolean serviceEnabled = accessibilityEnabled && enabledServices.contains(componentName); String serviceEnabledString; if (serviceEnabled) { preference.setSummary(getString(R.string.accessibility_feature_state_on)); serviceEnabledString = getString(R.string.accessibility_feature_state_on); } else { serviceEnabledString = getString(R.string.accessibility_feature_state_off); } // Disable all accessibility services that are not permitted. String packageName = serviceInfo.packageName; boolean serviceAllowed = permittedServices == null || permittedServices.contains(packageName); preference.setEnabled(serviceAllowed || serviceEnabled); String summaryString; if (serviceAllowed) { summaryString = serviceEnabledString; } else { preference.setSummary(getString(R.string.accessibility_feature_state_off)); summaryString = getString(R.string.accessibility_feature_or_input_method_not_allowed); } preference.setSummary(summaryString); preference.setOrder(i); preference.setFragment(ToggleAccessibilityServicePreferenceFragment.class.getName()); Loading src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +10 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.inputmethod; import android.app.Activity; import android.app.Fragment; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; Loading @@ -34,6 +35,7 @@ import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; Loading Loading @@ -102,6 +104,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment private SettingsObserver mSettingsObserver; private Intent mIntentWaitingForResult; private InputMethodSettingValuesWrapper mInputMethodSettingValues; private DevicePolicyManager mDpm; @Override public void onCreate(Bundle icicle) { Loading Loading @@ -175,6 +178,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mHandler = new Handler(); mSettingsObserver = new SettingsObserver(mHandler, activity); mDpm = (DevicePolicyManager) (getActivity(). getSystemService(Context.DEVICE_POLICY_SERVICE)); } private void updateInputMethodSelectorSummary(int value) { Loading Loading @@ -403,6 +408,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mKeyboardSettingsCategory.removePreference(pref); } mInputMethodPreferenceList.clear(); List<String> permittedList = mDpm.getPermittedInputMethodsForCurrentUser(); final Context context = getActivity(); final List<InputMethodInfo> imis = mShowsOnlyFullImeAndKeyboardList ? mInputMethodSettingValues.getInputMethodList() Loading @@ -410,8 +416,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment final int N = (imis == null ? 0 : imis.size()); for (int i = 0; i < N; ++i) { final InputMethodInfo imi = imis.get(i); final boolean isAllowedByOrganization = permittedList == null || permittedList.contains(imi.getPackageName()); final InputMethodPreference pref = new InputMethodPreference( context, imi, mShowsOnlyFullImeAndKeyboardList /* hasSwitch */, this); context, imi, mShowsOnlyFullImeAndKeyboardList /* hasSwitch */, isAllowedByOrganization, this); mInputMethodPreferenceList.add(pref); } final Collator collator = Collator.getInstance(); Loading src/com/android/settings/inputmethod/InputMethodPreference.java +10 −2 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic private final boolean mHasPriorityInSorting; private final OnSavePreferenceListener mOnSaveListener; private final InputMethodSettingValuesWrapper mInputMethodSettingValues; private final boolean mIsAllowedByOrganization; private AlertDialog mDialog = null; Loading @@ -78,14 +79,18 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic * @param imi The {@link InputMethodInfo} of this preference. * @param isImeEnabler true if this preference is the IME enabler that has enable/disable * switches for all available IMEs, not the list of enabled IMEs. * @param isAllowedByOrganization false if the IME has been disabled by a device or profile owner. * @param onSaveListener The listener called when this preference has been changed and needs * to save the state to shared preference. */ InputMethodPreference(final Context context, final InputMethodInfo imi, final boolean isImeEnabler, final OnSavePreferenceListener onSaveListener) { final boolean isImeEnabler, final boolean isAllowedByOrganization, final OnSavePreferenceListener onSaveListener) { super(context); setPersistent(false); mImi = imi; mIsAllowedByOrganization = isAllowedByOrganization; mOnSaveListener = onSaveListener; if (!isImeEnabler) { // Hide switch widget. Loading Loading @@ -178,7 +183,7 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic mImi, getContext()); // Only when this preference has a switch and an input method should be always enabled, // this preference should be disabled to prevent accidentally disabling an input method. setEnabled(!(isAlwaysChecked && isImeEnabler())); setEnabled(!((isAlwaysChecked && isImeEnabler()) || (!mIsAllowedByOrganization))); setChecked(mInputMethodSettingValues.isEnabledImi(mImi)); setSummary(getSummaryString()); } Loading @@ -189,6 +194,9 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic private String getSummaryString() { final Context context = getContext(); if (!mIsAllowedByOrganization) { return context.getString(R.string.accessibility_feature_or_input_method_not_allowed); } final InputMethodManager imm = getInputMethodManager(); final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(mImi, true); final ArrayList<CharSequence> subtypeLabels = new ArrayList<>(); Loading Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -3602,6 +3602,8 @@ <string name="accessibility_feature_state_on">On</string> <!-- Summary for the disabled state of an accessibility feature. [CHAR LIMIT=10] --> <string name="accessibility_feature_state_off">Off</string> <!-- Summary when an accessibility feature or ime is not permitted. [CHAR LIMIT=40] --> <string name="accessibility_feature_or_input_method_not_allowed">Not allowed by your organization</string> <!-- Title for the preference category containing the video caption preview. [CHAR LIMIT=35] --> <string name="captioning_preview_title">Preview</string> Loading
src/com/android/settings/accessibility/AccessibilitySettings.java +25 −3 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.accessibility; import android.accessibilityservice.AccessibilityServiceInfo; import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; Loading @@ -28,6 +29,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; Loading Loading @@ -197,11 +199,15 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements private int mLongPressTimeoutDefault; private DevicePolicyManager mDpm; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); addPreferencesFromResource(R.xml.accessibility_settings); initializeAllPreferences(); mDpm = (DevicePolicyManager) (getActivity() .getSystemService(Context.DEVICE_POLICY_SERVICE)); } @Override Loading Loading @@ -434,7 +440,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements accessibilityManager.getInstalledAccessibilityServiceList(); Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings( getActivity()); List<String> permittedServices = mDpm.getPermittedAccessibilityServices( UserHandle.myUserId()); final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; Loading @@ -454,11 +461,26 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements preference.setTitle(title); final boolean serviceEnabled = accessibilityEnabled && enabledServices.contains(componentName); String serviceEnabledString; if (serviceEnabled) { preference.setSummary(getString(R.string.accessibility_feature_state_on)); serviceEnabledString = getString(R.string.accessibility_feature_state_on); } else { serviceEnabledString = getString(R.string.accessibility_feature_state_off); } // Disable all accessibility services that are not permitted. String packageName = serviceInfo.packageName; boolean serviceAllowed = permittedServices == null || permittedServices.contains(packageName); preference.setEnabled(serviceAllowed || serviceEnabled); String summaryString; if (serviceAllowed) { summaryString = serviceEnabledString; } else { preference.setSummary(getString(R.string.accessibility_feature_state_off)); summaryString = getString(R.string.accessibility_feature_or_input_method_not_allowed); } preference.setSummary(summaryString); preference.setOrder(i); preference.setFragment(ToggleAccessibilityServicePreferenceFragment.class.getName()); Loading
src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +10 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.inputmethod; import android.app.Activity; import android.app.Fragment; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; Loading @@ -34,6 +35,7 @@ import android.hardware.input.InputManager; import android.hardware.input.KeyboardLayout; import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; Loading Loading @@ -102,6 +104,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment private SettingsObserver mSettingsObserver; private Intent mIntentWaitingForResult; private InputMethodSettingValuesWrapper mInputMethodSettingValues; private DevicePolicyManager mDpm; @Override public void onCreate(Bundle icicle) { Loading Loading @@ -175,6 +178,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mHandler = new Handler(); mSettingsObserver = new SettingsObserver(mHandler, activity); mDpm = (DevicePolicyManager) (getActivity(). getSystemService(Context.DEVICE_POLICY_SERVICE)); } private void updateInputMethodSelectorSummary(int value) { Loading Loading @@ -403,6 +408,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mKeyboardSettingsCategory.removePreference(pref); } mInputMethodPreferenceList.clear(); List<String> permittedList = mDpm.getPermittedInputMethodsForCurrentUser(); final Context context = getActivity(); final List<InputMethodInfo> imis = mShowsOnlyFullImeAndKeyboardList ? mInputMethodSettingValues.getInputMethodList() Loading @@ -410,8 +416,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment final int N = (imis == null ? 0 : imis.size()); for (int i = 0; i < N; ++i) { final InputMethodInfo imi = imis.get(i); final boolean isAllowedByOrganization = permittedList == null || permittedList.contains(imi.getPackageName()); final InputMethodPreference pref = new InputMethodPreference( context, imi, mShowsOnlyFullImeAndKeyboardList /* hasSwitch */, this); context, imi, mShowsOnlyFullImeAndKeyboardList /* hasSwitch */, isAllowedByOrganization, this); mInputMethodPreferenceList.add(pref); } final Collator collator = Collator.getInstance(); Loading
src/com/android/settings/inputmethod/InputMethodPreference.java +10 −2 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic private final boolean mHasPriorityInSorting; private final OnSavePreferenceListener mOnSaveListener; private final InputMethodSettingValuesWrapper mInputMethodSettingValues; private final boolean mIsAllowedByOrganization; private AlertDialog mDialog = null; Loading @@ -78,14 +79,18 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic * @param imi The {@link InputMethodInfo} of this preference. * @param isImeEnabler true if this preference is the IME enabler that has enable/disable * switches for all available IMEs, not the list of enabled IMEs. * @param isAllowedByOrganization false if the IME has been disabled by a device or profile owner. * @param onSaveListener The listener called when this preference has been changed and needs * to save the state to shared preference. */ InputMethodPreference(final Context context, final InputMethodInfo imi, final boolean isImeEnabler, final OnSavePreferenceListener onSaveListener) { final boolean isImeEnabler, final boolean isAllowedByOrganization, final OnSavePreferenceListener onSaveListener) { super(context); setPersistent(false); mImi = imi; mIsAllowedByOrganization = isAllowedByOrganization; mOnSaveListener = onSaveListener; if (!isImeEnabler) { // Hide switch widget. Loading Loading @@ -178,7 +183,7 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic mImi, getContext()); // Only when this preference has a switch and an input method should be always enabled, // this preference should be disabled to prevent accidentally disabling an input method. setEnabled(!(isAlwaysChecked && isImeEnabler())); setEnabled(!((isAlwaysChecked && isImeEnabler()) || (!mIsAllowedByOrganization))); setChecked(mInputMethodSettingValues.isEnabledImi(mImi)); setSummary(getSummaryString()); } Loading @@ -189,6 +194,9 @@ class InputMethodPreference extends SwitchPreference implements OnPreferenceClic private String getSummaryString() { final Context context = getContext(); if (!mIsAllowedByOrganization) { return context.getString(R.string.accessibility_feature_or_input_method_not_allowed); } final InputMethodManager imm = getInputMethodManager(); final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(mImi, true); final ArrayList<CharSequence> subtypeLabels = new ArrayList<>(); Loading