我想为我的应用授予Android 9.0设备上的系统权限“ INJECT_EVENTS”,但是我不能。
<uses-permission android:name="android.permission.INJECT_EVENTS"
android:protectionLevel="signature"
tools:ignore="ProtectedPermissions" />
我还阅读了https://source.android.com/devices/tech/config/perms-whitelist文章,并将apk移至/ system / priv-app,然后尝试在接下来的位置使用inject_events权限将我的apk列入白名单:
第一次尝试:
第二次尝试:
这是两个文件中我的白名单编辑的样子:
<privapp-permissions package="com.my.apk">
<permission name="android.permission.INJECT_EVENTS"/>
</privapp-permissions>
</permissions>
*我试图通过使用“ PackageManager”对logcat进行grep调试来进行调试,但是没有什么用。此外,adb shell dumpsys package myapk | grep permission
显示未授予permission.INJECT_EVENTS
。
重要:在android 8.1上运行时,apk被授予inject_events
。没有使用白名单。
完成所有操作后,预计将授予inject_events
,但不会。
答案 0 :(得分:0)
我解决了。 问题是我有SAMSUNG A205FN。以及由三星公司签名的股票ROM。要将我的应用转换为系统应用,我需要使用ROM的符号进行签名。通常,这是Android版本签名,可以在其回购中找到。但是三星的签名是一个秘密的签名,所以这是不可能的。
解决方法:如果您拥有SAMSUNG手机,只需刷新GSI ROM并使用Android的签名即可。
P.S。为了了解我应该使用什么签名,我从电话中取出了所有系统应用程序和priv-apps,并阅读了它们的签名。它显示所有这些都由三星签名,而没有一个由Android签名。也许,因为那是一种更简单的方法。
首先,找到所有priv-app apk并将其复制到pc:
adb shell find /system/priv-app -name "*.apk" -exec cp {} /path/to/copy \;
,然后打印证书并通过“通用名称” CN grep证书。您也可以使用CN = Android或其他方式关闭页面
ls | xargs -L 1 keytool -printcert -jarfile | grep CN=
P.S。如果您没有SAMSUNG手机,则可以轻松地将应用程序转换为系统应用程序,可以使用 systemizer 应用程序(Magisk-> Modules-> Systemizer并下载)