ADB:在DeviceAdminReceiver#onProfileProvisioningComplete中得到通知

时间:2019-06-11 08:19:29

标签: android broadcastreceiver adb android-broadcast

我想使用adb来配置我的自助服务终端应用程序(用于COSU设备),并以onProfileProvisioningComplete方法得到通知,该方法在扩展系统DeviceAdminReceiver的接收者中被覆盖。

第一部分我很成功-通过使用abd设置设备所有者并开始进入锁定任务模式的活动。 但是,我在onProfileProvisioningComplete中获得了应用程序的配置代码-我在此处读取了Intent的android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE条目的内容。

问题是,使用以下方法设置设备所有者后,不会调用该方法

adb shell dpm set-device-owner my.package/.extends.device.AdminReceiver

因此,我尝试通过操作android.app.action.PROFILE_PROVISIONING_COMPLETE发送广播,并将一些键值对放入Intent中:

adb shell am broadcast -a android.app.action.PROFILE_PROVISIONING_COMPLETE -e my_key my_value

但是得到以下信息:

Permission Denial: broadcasting Intent { act=android.app.action.PROFILE_PROVISIONING_COMPLETE flg=0x400010 cmp=my.package/.extends.device.AdminReceiver (has extras) } from null (pid=4726, uid=2000) requires android.permission.BIND_DEVICE_ADMIN due to receiver my.package/.extends.device.AdminReceiver

我试图授予许可:

adb shell pm grant package android.permission.BIND_DEVICE_ADMIN

但是得到了

Operation not allowed: java.lang.SecurityException: Package my.package has not requested permission android.permission.BIND_DEVICE_ADMIN

很明显,我的应用程序未请求许可-我的接收器正在请求。但是,当我尝试在上述命令中将接收者指定为my.package/.extends.device.AdminReceiver时,它不起作用-我得到了Bad argument

因此,我尝试将接收者的权限提升到应用程序级别(通过uses-permission)。也没用。

在这种背景下,如何使我的代码接收使用android.app.action.PROFILE_PROVISIONING_COMPLETE发送的adb广播?甚至可以通过adb吗?

0 个答案:

没有答案