我正在为媒体盒创建一个android应用。该框已已植根。我必须绕过权限(也是运行时权限),因为用户将不会与设备进行交互。我也尝试将apk推送到 system / priv-app 文件夹中,以使其成为系统应用程序。尽管如此,无论何时启动我的应用程序,它都会请求权限。有什么方法可以绕过root用户权限吗?我已经使用以下命令将APK推送到priv-app文件夹。
adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot
应用似乎类似于系统应用,因为它现在无法卸载。但是权限问题仍然存在。要授予所有权限还需要做些额外的事情吗?请帮忙。
我也尝试过bypass android usb host permission confirmation dialog,但这似乎是一个很古老的故事。
答案 0 :(得分:1)
某些权限是签名级别的,这意味着除非您的应用程序使用与系统其余部分相同的密钥进行签名,否则无法授予这些权限。如果您需要这些,那么您几乎无能为力,除非相关的API有shell命令的替代方案。
其他权限是特权级的,这意味着仅当应用程序位于/system/priv-app/
中时才被授予。您没有提到正在使用的权限,但是我建议您将应用程序放在priv-app
中,而不要放在app
中。如果此设备位于Lollipop或更高版本上,则应用程序应在priv-app
内有一个子文件夹(例如/system/priv-app/SomeApp/SomeApp.apk
)。
第三种类型是应用程序操作权限。这些不是运行时权限,但是可以使用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
将授予其他功能的权限。