diff options
author | Nicolas Prevot <nprevot@google.com> | 2015-06-03 14:36:35 -0700 |
---|---|---|
committer | Nicolas Prevot <nprevot@google.com> | 2015-06-03 14:41:39 -0700 |
commit | d0dfdda2f6be820b9447f79c2505b5a87da4b5c5 (patch) | |
tree | 553d47de7b557635a59e0c4875cf4577f9460546 /src/com/android/settings/applications | |
parent | 96e25b8d938082715f93bd071eb386a2174b910d (diff) | |
download | packages_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-x | src/com/android/settings/applications/InstalledAppDetails.java | 23 |
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) { |