From 790d198860dc550f2dbaa5ac502cbcda1f8530c9 Mon Sep 17 00:00:00 2001 From: Mahaver Chopra Date: Thu, 7 Jul 2016 16:06:49 +0100 Subject: Add an api to verify if ro.device_owner was set Currently for OobConfig app we used DEVICE_PROVISIONED Global setting to verify if device was provisioned. This setting can be modified using adb. we just need to know if it was set atleast once. Added an api in DPM to return whether system property "ro.device_owner" was set. Bug: 29935702 Change-Id: I9a2b5217c0bc2cc11d68282e05a5450ea3f6cf21 --- core/java/android/app/admin/DevicePolicyManager.java | 13 +++++++++++++ core/java/android/app/admin/IDevicePolicyManager.aidl | 2 ++ .../server/devicepolicy/DevicePolicyManagerService.java | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 325a15f1cb30..7b46ccd7dcd2 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -6416,6 +6416,19 @@ public class DevicePolicyManager { } } + /** + * @hide + * @return whether {@link android.provider.Settings.Global#DEVICE_PROVISIONED} has ever been set + * to 1. + */ + public boolean isDeviceProvisioned() { + try { + return mService.isDeviceProvisioned(); + } catch (RemoteException re) { + throw re.rethrowFromSystemServer(); + } + } + private void throwIfParentInstance(String functionName) { if (mParentInstance) { throw new SecurityException(functionName + " cannot be called on the parent instance"); diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index ddec412e53c1..4b793d15753a 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -301,4 +301,6 @@ interface IDevicePolicyManager { boolean isUninstallInQueue(String packageName); void uninstallPackageWithActiveAdmins(String packageName); + + boolean isDeviceProvisioned(); } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index c9123fd2227f..31b756e57037 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -8975,6 +8975,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + @Override + public boolean isDeviceProvisioned() { + return !TextUtils.isEmpty(mInjector.systemPropertiesGet(PROPERTY_DEVICE_OWNER_PRESENT)); + } + private void removePackageIfRequired(final String packageName, final int userId) { if (!packageHasActiveAdmins(packageName, userId)) { // Will not do anything if uninstall was not requested or was already started. -- cgit v1.2.3-59-g8ed1b