考虑一个使用BroadcastReceiver的简单工具来实现一个简单的目标.因为这不应该被其他应用程序使用,它定义了一个具有signatureLevel签名或signatureOrSystem的权限:
package="any.test">
android:name="any.test.PERMISSION"
android:protectionLevel="signatureOrSystem" />
android:name=".Receiver"
android:exported="true"
android:permission="any.test.PERMISSION" />
现在我想通过发送广播来测试这个
adb shell am broadcast -n any.test/.Receiver
从我的电脑虽然这在仿真器上工作得很好,但是当设置此权限时,它在实际设备上完全不起作用.如果未设置权限,则一切都按预期方式运行.
那么如何定义或授予权限,以便我可以在一个真正的设备上用ADB测试这一切?
我想让这个导出的接收器在调试模式下更安全一些,所以如果有一个ADB使用的特殊权限或运行时测试,只允许来自ADB的调用,我可以在Receiver.onReceive(Context,Intent)中实现它也会帮助.接收器不必在同一时间为ADB和其他应用程序工作.