考虑使用 BroadcastReceiver
实现一个简单目标的简单工具。由于这不应该被其他应用程序使用,因此它定义了一个权限,保护级别为 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
和其他应用程序。