我正在为媒体框创建一个android应用程序。盒子是根的。我必须绕过权限(运行时权限也是如此),因为用户不会与设备交互。我试图将apk推到system/priv-app文件夹中,同时也使其成为系统应用程序。不过,每当我的应用程序启动时,它都会请求许可。有什么方法可以绕过根设备中的权限吗?我使用以下命令将APK推送到priv-app文件夹。
adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot应用程序看起来像系统应用程序,因为它现在不能卸载。但许可问题仍然存在。是否需要额外的操作才能授予所有权限?请帮帮忙。
我也尝试过绕过android usb主机权限确认对话框,但这似乎是一个非常古老的故事。
发布于 2018-10-29 14:38:33
有些权限是签名级别的,这意味着除非您的应用程序使用用于签署系统其余部分的相同密钥进行签名,否则不能授予它们。如果您需要这些工具中的任何一个,那么您几乎无能为力,除非相关的API有shell命令可供选择。
其他权限是特权级别的,这意味着只有当应用程序位于/system/priv-app/中时才授予它们。您没有提到您使用的是哪些权限,但我建议您将应用程序放在priv-app中而不是app中。如果这个设备是在洛利普或更高版本,应用程序应该有一个子文件夹内的priv-app (如/system/priv-app/SomeApp/SomeApp.apk)。
第三种类型是app-op权限。这些不是运行时权限,但可以通过shell命令授予它们:
cmd appops set <PACKAGE> <OP> <MODE>例如,要授予SYSTEM_ALERT_WINDOW权限:
cmd appops set com.some.package android:system_alert_window allow第四种类型是运行时/开发权限。这两项都可以在下列条件下予以批准:
pm grant <PACKAGE> <PERMISSION>例如,要授予WRITE_EXTERNAL_STORAGE
pm grant com.some.package android.permission.WRITE_EXTERNAL_STORAGE您可以通过查看平台AndroidManifest.xml来检查您的权限类型。查找您的权限并检查protectionLevel字段。
signature意味着签名privileged的意思是特权development意味着开发dangerous意味着运行时normal权限某些权限(如WRITE_SECURE_SETTINGS )具有多个保护级别:signature|privileged|development。
如果这些条件都得到满足,Android将授予您的应用程序许可。使用WSS,您可以将应用程序放在priv-app中,也可以使用pm grant。无论哪种方式都能让你进入。
如果权限的保护级别同时具有appops和development (如PACKAGE_USAGE_STATS ),请小心。使用cmd appops将为某些函数授予该权限,而pm grant则授予其他函数该权限。
https://stackoverflow.com/questions/53047615
复制相似问题