gpt4 book ai didi

android - adb shell 的 BroadcastReceiver 权限

转载 作者:可可西里 更新时间:2023-11-01 18:48:05 30 4
gpt4 key购买 nike

考虑使用 BroadcastReceiver 实现简单目标的简单工具。因为这不应被其他应用程序使用,所以它定义了一个保护级别为 signaturesignatureOrSystem 的权限:

<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 在真实设备上测试所有这些?

我想让这个导出的接收器在 Debug模式下更安全一些,所以如果对 ADB 使用有特殊许可,或者运行时测试只允许来自 ADB< 的调用 我可以在 Receiver.onReceive(Context, Intent) 中实现,它也会有所帮助。接收器不必同时为 ADB 和其他应用程序工作。

最佳答案

root shell 可以发送受任何权限保护的任何广播。
一个普通的 shell 也被授予了很多权限,查看 AOSP 源代码中的这个文件:frameworks\base\packages\Shell\AndroidManifest.xml .

将您的any.test.PERMISSION替换为此文件中protectionLevel为signatureOrSystem的一个权限,例如android.permission.REAL_GET_TASKS。之后,您可以在 shell 中向此接收器发送广播,但其他 3rd 应用程序不能。

关于android - adb shell 的 BroadcastReceiver 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983235/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com