summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSudheer Shanka <sudheersai@google.com>2016-01-19 15:43:01 +0000
committerSudheer Shanka <sudheersai@google.com>2016-01-20 21:08:42 +0000
commit49a28f7e9a17e914c4a3135e45c4eec1852e558a (patch)
treeede7fc40b7ab4a0650a40b0722ae48d79a8ba681 /src
parentb2da42aeb4e56dd3a4880db0fa14062bd6ed895c (diff)
downloadandroid_packages_apps_PackageInstaller-49a28f7e9a17e914c4a3135e45c4eec1852e558a.tar.gz
android_packages_apps_PackageInstaller-49a28f7e9a17e914c4a3135e45c4eec1852e558a.tar.bz2
android_packages_apps_PackageInstaller-49a28f7e9a17e914c4a3135e45c4eec1852e558a.zip
Add a padlock to options when disabled by admin.
Currently, if admin has enforced setPermissionGrantState to denied or granted, we disable the option and add a summary that the option is disabled by admin. With this change, a padlock will also be added in this case. Change-Id: I58080c914fabab045282eb3cc491901676fffaed
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java13
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java26
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java79
3 files changed, 110 insertions, 8 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
index f56cba70..d4dfca1e 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
@@ -53,10 +53,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
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 java.util.ArrayList;
import java.util.List;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
public final class AppPermissionsFragment extends SettingsWithHeader
implements OnPreferenceChangeListener {
@@ -216,7 +219,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader
boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);
- SwitchPreference preference = new SwitchPreference(context);
+ RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context);
preference.setOnPreferenceChangeListener(this);
preference.setKey(group.getName());
Drawable icon = Utils.loadDrawable(context.getPackageManager(),
@@ -226,9 +229,15 @@ public final class AppPermissionsFragment extends SettingsWithHeader
preference.setTitle(group.getLabel());
if (group.isPolicyFixed()) {
preference.setSummary(getString(R.string.permission_summary_enforced_by_policy));
+ EnforcedAdmin admin =
+ RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context);
+ if (admin != null) {
+ preference.setDisabledByAdmin(admin);
+ } else {
+ preference.setEnabled(false);
+ }
}
preference.setPersistent(false);
- preference.setEnabled(!group.isPolicyFixed());
preference.setChecked(group.areRuntimePermissionsGranted());
if (isPlatform) {
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
index eee2f716..550aaa92 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
@@ -47,10 +47,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
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 java.util.ArrayList;
import java.util.List;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
public final class PermissionAppsFragment extends PermissionsFrameFragment implements Callback,
Preference.OnPreferenceChangeListener {
@@ -83,6 +86,8 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
private Callback mOnPermissionsLoadedListener;
+ private EnforcedAdmin mEnforcedAdmin;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -97,6 +102,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
mPermissionApps = new PermissionApps(getActivity(), groupName, this);
mPermissionApps.refresh(true);
+ mEnforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity());
}
@Override
@@ -219,12 +225,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
if (existingPref != null) {
// If existing preference - only update its state.
- if (app.isPolicyFixed()) {
- existingPref.setSummary(getString(
- R.string.permission_summary_enforced_by_policy));
+ final boolean isPolicyFixed = app.isPolicyFixed();
+ if (!isTelevision && (existingPref instanceof RestrictedSwitchPreference)) {
+ ((RestrictedSwitchPreference) existingPref).setDisabledByAdmin(
+ isPolicyFixed ? mEnforcedAdmin : null);
+ } else {
+ existingPref.setEnabled(!isPolicyFixed);
}
+ existingPref.setSummary(isPolicyFixed ?
+ getString(R.string.permission_summary_enforced_by_policy) : null);
existingPref.setPersistent(false);
- existingPref.setEnabled(!app.isPolicyFixed());
if (existingPref instanceof SwitchPreference) {
((SwitchPreference) existingPref)
.setChecked(app.areRuntimePermissionsGranted());
@@ -232,16 +242,20 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
continue;
}
- SwitchPreference pref = new SwitchPreference(context);
+ RestrictedSwitchPreference pref = new RestrictedSwitchPreference(context);
pref.setOnPreferenceChangeListener(this);
pref.setKey(app.getKey());
pref.setIcon(app.getIcon());
pref.setTitle(app.getLabel());
if (app.isPolicyFixed()) {
pref.setSummary(getString(R.string.permission_summary_enforced_by_policy));
+ if (!isTelevision && mEnforcedAdmin != null) {
+ pref.setDisabledByAdmin(mEnforcedAdmin);
+ } else {
+ pref.setEnabled(false);
+ }
}
pref.setPersistent(false);
- pref.setEnabled(!app.isPolicyFixed());
pref.setChecked(app.areRuntimePermissionsGranted());
if (isSystemApp && isTelevision) {
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java b/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java
new file mode 100644
index 00000000..8ab04807
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/handheld/RestrictedSwitchPreference.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.packageinstaller.permission.ui.handheld;
+
+import android.content.Context;
+import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.packageinstaller.R;
+import com.android.settingslib.RestrictedLockUtils;
+
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+public class RestrictedSwitchPreference extends SwitchPreference {
+ private final Context mContext;
+ private boolean mDisabledByAdmin;
+ private EnforcedAdmin mEnforcedAdmin;
+
+ public RestrictedSwitchPreference(Context context) {
+ super(context);
+ mContext = context;
+ }
+
+ @Override
+ public void onBindView(View view) {
+ super.onBindView(view);
+ final TextView textView = (TextView) view.findViewById(android.R.id.title);
+ if (textView != null) {
+ RestrictedLockUtils.setTextViewPadlock(mContext, textView, mDisabledByAdmin);
+ if (mDisabledByAdmin) {
+ view.setEnabled(true);
+ }
+ }
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ if (enabled && mDisabledByAdmin) {
+ setDisabledByAdmin(null);
+ } else {
+ super.setEnabled(enabled);
+ }
+ }
+
+ public void setDisabledByAdmin(EnforcedAdmin admin) {
+ final boolean disabled = (admin != null ? true : false);
+ mEnforcedAdmin = admin;
+ if (mDisabledByAdmin != disabled) {
+ mDisabledByAdmin = disabled;
+ setEnabled(!disabled);
+ }
+ }
+
+ @Override
+ public void performClick(PreferenceScreen preferenceScreen) {
+ if (mDisabledByAdmin) {
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
+ } else {
+ super.performClick(preferenceScreen);
+ }
+ }
+} \ No newline at end of file