Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android SecurityException: Admin does not own the profile

I have a device manager application and I am trying to use setScreenCaptureDisabled(..) function of DevicePolicyManager class available since API 21.

DevicePolicyManager pManager = (android.app.admin.DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
pManager.setScreenCaptureDisabled(admin.getReceiverName(), true);

I am getting the following error:

03-30 13:50:24.623: E/AndroidRuntime(11564): 
java.lang.SecurityException: Admin 
ComponentInfo{com.example.xxv/com.example.xxv.DeviceAdminReceiver} 
does not own the profile

Any idea how I can solve this problem?

If there is any permission required, can you please indicate what it is.

like image 933
lyc001 Avatar asked Mar 30 '15 12:03

lyc001


2 Answers

Your app needs to become either the device owner or profile owner. The easiest way to do this for one device is to use adb as here:

http://florent-dupont.blogspot.co.uk/2015/01/android-shell-command-dpm-device-policy.html

Basically from a command prompt

adb shell 
dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr

where com.foo.deviceowner is your app package, and DeviceAdminRcvr is the DeviceAdminReceiver in your package. Note that you will get a java.lang.IllegalStateException unless you have removed all accounts from the device (Settings > Accounts).

The other method is to create a NFC provisioning app as:

https://source.android.com/devices/tech/admin/provision.html

like image 131
Jonathan Twite Avatar answered Nov 10 '22 03:11

Jonathan Twite


I think that you need to setup Profile with this code

Intent intent = new Intent(**ACTION_PROVISION_MANAGED_PROFILE**);
intent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
activity.getApplicationContext().getPackageName());
if (intent.resolveActivity(activity.getPackageManager()) != null) {
    startActivityForResult(intent, REQUEST_PROVISION_MANAGED_PROFILE);
    activity.finish();
} else {
    Toast.makeText(activity, "Stopping.",Toast.LENGTH_SHORT).show();
}
like image 45
valerio Avatar answered Nov 10 '22 02:11

valerio