我想使用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
吗?