[英]How to get system app permission on Android 9.0
我想在 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,然后尝试在下一个地方将我的 apk 与 inject_events 权限列入白名单:
第一次尝试:
第二次尝试:
这就是我的白名单编辑在两个文件中的样子:
<privapp-permissions package="com.my.apk">
<permission name="android.permission.INJECT_EVENTS"/>
</privapp-permissions>
</permissions>
*我试图通过使用“PackageManager”grep'ing logcat 来调试它,但没有任何用处。 还有adb shell dumpsys package myapk | grep permission
adb shell dumpsys package myapk | grep permission
显示没有授予permission.INJECT_EVENTS
。
重要:apk 在inject_events
8.1 上运行时被授予注入事件。 没有使用白名单。
一切完成后,预计将授予inject_events
,但没有。
我解决了。 问题是我有三星 A205FN。 和库存 ROM,由三星签名。 要将我的应用程序转换为系统应用程序,我需要使用 ROM 的 sign 对其进行签名。 通常,它是 Android 发布签名,可以在他们的仓库中找到。 但是三星的签名是秘密的,所以不可能。
解决方法:如果您有三星手机,只需 flash GSI ROM 并使用 Android 的签名。
PS为了了解我应该使用什么签名,我从手机中获取了所有系统应用程序和私有应用程序并阅读了他们的签名。 它显示所有这些都是由SAMSUNG签名的,没有一个是由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=
PS如果您没有三星手机,要轻松将应用程序转换为系统应用程序,您可以使用系统程序应用程序( Magisk- >Modules->Systemizer 并下载)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.