【发布时间】:2016-05-01 05:01:46
【问题描述】:
考虑一个使用BroadcastReceiver 的简单工具来实现一个简单的目标。因为这不应该被其他应用程序使用,所以它定义了一个 protectionLevel 为signature 或signatureOrSystem 的权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="any.test">
<permission
android:name="any.test.PERMISSION"
android:protectionLevel="signatureOrSystem" />
<application android:label="AnyTest">
<receiver
android:name=".Receiver"
android:exported="true"
android:permission="any.test.PERMISSION" />
</application>
</manifest>
现在我想通过发送广播来测试这个
adb shell am broadcast -n any.test/.Receiver
来自我的电脑。虽然这在模拟器上工作得很好,但在设置了这个权限后,它在真实设备上根本不起作用。如果没有设置权限,一切都会按预期进行。
那么我该如何定义或授予权限,以便我可以使用ADB 在真实设备上测试所有这些?
我想让这个导出的接收器在调试模式下更加安全,所以如果有 ADB 使用的特殊权限或运行时测试只允许来自 ADB 的调用,我可以在 Receiver.onReceive(Context, Intent) 中实现,它也会有所帮助。接收器不必同时为ADB 和其他应用程序工作。
【问题讨论】:
-
我不明白这句话:“......不工作......只要设置了权限。没有它一切都很好......”你是说它工作没有许可,你想让它不工作?
标签: android permissions broadcastreceiver android-permissions