summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt McKeon <mattmckeon@google.com>2016-11-04 16:34:16 -0400
committerMatt McKeon <mattmckeon@google.com>2016-11-04 16:34:16 -0400
commitdf5a889da09c2584ef143b02198f9e38b28a223f (patch)
tree0f2dba655261560ba655e487a78891febc0e55c9 /src
parentadb79abfb7021e019ccab59a264e618aee6c5bad (diff)
downloadandroid_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.java35
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());