summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/applications
diff options
context:
space:
mode:
authorNicolas Prevot <nprevot@google.com>2015-06-03 14:36:35 -0700
committerNicolas Prevot <nprevot@google.com>2015-06-03 14:41:39 -0700
commitd0dfdda2f6be820b9447f79c2505b5a87da4b5c5 (patch)
tree553d47de7b557635a59e0c4875cf4577f9460546 /src/com/android/settings/applications
parent96e25b8d938082715f93bd071eb386a2174b910d (diff)
downloadpackages_apps_Settings-d0dfdda2f6be820b9447f79c2505b5a87da4b5c5.zip
packages_apps_Settings-d0dfdda2f6be820b9447f79c2505b5a87da4b5c5.tar.gz
packages_apps_Settings-d0dfdda2f6be820b9447f79c2505b5a87da4b5c5.tar.bz2
In Settings, don't allow to disable an app which is profile/device owner.
In the App Info section of Settings: If the app is device owner or profile owner of at least one user, disable the disable button. BUG: 20831525 Change-Id: Iff00314108caf8c0b209f66060e6655ef06f2aa0
Diffstat (limited to 'src/com/android/settings/applications')
-rwxr-xr-xsrc/com/android/settings/applications/InstalledAppDetails.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 4bd74b0..26e3d49 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -16,6 +16,7 @@
package com.android.settings.applications;
+import android.app.admin.DevicePolicyManager;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
@@ -32,6 +33,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
+import android.content.pm.UserInfo;
import android.net.INetworkStatsService;
import android.net.INetworkStatsSession;
import android.net.NetworkTemplate;
@@ -188,6 +190,10 @@ public class InstalledAppDetails extends AppInfoBase
enabled = false;
}
+ if (isProfileOrDeviceOwner(mPackageInfo.packageName)) {
+ enabled = false;
+ }
+
// Home apps need special handling. Bundled ones we don't risk downgrading
// because that can interfere with home-key resolution. Furthermore, we
// can't allow uninstallation of the only home app, and we don't want to
@@ -223,6 +229,23 @@ public class InstalledAppDetails extends AppInfoBase
}
}
+ /** Returns if the supplied package is device owner or profile owner of at least one user */
+ private boolean isProfileOrDeviceOwner(String packageName) {
+ List<UserInfo> userInfos = mUserManager.getUsers();
+ DevicePolicyManager dpm = (DevicePolicyManager)
+ getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
+ if (packageName.equals(dpm.getDeviceOwner())) {
+ return true;
+ }
+ for (UserInfo userInfo : userInfos) {
+ ComponentName cn = dpm.getProfileOwnerAsUser(userInfo.id);
+ if (cn != null && cn.getPackageName().equals(packageName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {