diff options
author | Matt McKeon <mattmckeon@google.com> | 2016-11-04 16:34:16 -0400 |
---|---|---|
committer | Matt McKeon <mattmckeon@google.com> | 2016-11-04 16:34:16 -0400 |
commit | df5a889da09c2584ef143b02198f9e38b28a223f (patch) | |
tree | 0f2dba655261560ba655e487a78891febc0e55c9 /src | |
parent | adb79abfb7021e019ccab59a264e618aee6c5bad (diff) | |
download | android_packages_apps_PackageInstaller-df5a889da09c2584ef143b02198f9e38b28a223f.tar.gz android_packages_apps_PackageInstaller-df5a889da09c2584ef143b02198f9e38b28a223f.tar.bz2 android_packages_apps_PackageInstaller-df5a889da09c2584ef143b02198f9e38b28a223f.zip |
Display support dialog for locked permissions.
BUG=32427299
Change-Id: I04c229919c24c09131244fc8acb2c64d8902bc80
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java index 9e821067..6eac0c67 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -23,8 +23,10 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.UserHandle; import android.preference.Preference; import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.support.wearable.view.WearableDialogHelper; import android.util.Log; @@ -39,6 +41,8 @@ import com.android.packageinstaller.permission.model.AppPermissions; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import java.util.ArrayList; import java.util.List; @@ -64,6 +68,35 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment { private boolean mHasConfirmedRevoke; + /** + * Provides click behavior for disabled preferences. + * We can't use {@link PreferenceFragment#onPreferenceTreeClick}, as the base + * {@link SwitchPreference} doesn't delegate to that method if the preference is disabled. + */ + private static class PermissionSwitchPreference extends SwitchPreference { + + private final Activity mActivity; + + public PermissionSwitchPreference(Activity activity) { + super(activity); + this.mActivity = activity; + } + + @Override + public void performClick(PreferenceScreen preferenceScreen) { + super.performClick(preferenceScreen); + if (!isEnabled()) { + // If setting the permission is disabled, it must have been locked + // by the device or profile owner. So get that info and pass it to + // the support details dialog. + EnforcedAdmin deviceOrProfileOwner = RestrictedLockUtils.getProfileOrDeviceOwner( + mActivity, UserHandle.myUserId()); + RestrictedLockUtils.sendShowAdminSupportDetailsIntent( + mActivity, deviceOrProfileOwner); + } + } + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -129,7 +162,7 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment { boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); - final SwitchPreference pref = new SwitchPreference(getContext()); + final SwitchPreference pref = new PermissionSwitchPreference(getActivity()); pref.setKey(group.getName()); pref.setTitle(group.getLabel()); pref.setChecked(group.areRuntimePermissionsGranted()); |