gpt4 book ai didi

Android Marshmallow, "dangerous"保护级别和系统组件/应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:20 26 4
gpt4 key购买 nike

我正在开发一个将预安装(作为系统应用程序)在固件上的应用程序。

到目前为止关于 system apps 之间关系的文档,新权限模型,and the protection levels - 我不明白系统应用程序何时需要(如果有的话)请求用户许可。

当我尝试使用 WRITE_EXTERNAL_STORAGE 时,我的问题就开始了允许。从文档中我可以看到它被标记为“危险”许可。

-“危险”权限会自动授予系统应用吗?

当我使用 WRITE_EXTERNAL_STORAGE 时权限(作为系统应用程序)我收到安全异常,我不知道这是否意味着即使我的应用程序安装为系统应用程序也很艰难 - 用户必须请求“危险”权限..

还有一点要提一下:
为了检查作为系统应用程序的应用程序行为,我将我的应用程序 APK 安装到运行 SDK 预览版 3 的 nexus 5 的 sys-priv 目录(设备已 Root )。这是我的时候当尝试使用方法需要外部存储权限时出现安全异常。

最佳答案

经过大量的挖掘和调试,我终于找到了为系统应用程序授予棉花糖运行时权限的一些线索,在this stackoverflow ticket中得到了很多启发。 .

关键逻辑在 DefaultPermissionGrantPolicy 。 systemReady 后,PackageManagerService 会检查此用户的默认运行时权限是否尚未设置(即这是一个新用户),如果是,PackageManagerService 调用 DefaultPermissionGrantPolicy.grantDefaultPermissions() 来检查/授予权限:

public void grantDefaultPermissions(int userId) {
grantPermissionsToSysComponentsAndPrivApps(userId);
grantDefaultSystemHandlerPermissions(userId);
}

在两种情况下,您的内置应用可能会被自动授予运行时权限。

A> grantPermissionsToSysComponentsAndPrivApps -> 将使用FLAG_PERMISSION_SYSTEM_FIXEDFLAG_PERMISSION_GRANTED_BY_DEFAULT 授予运行时权限。

  • 如果您的系统应用有 uid<10000,您将被授予您的用户组的权限。
  • 如果您的系统应用符合以下所有条件,它将被授予权限。

    1. 是一个特权应用程序(在/system/priv-app/下)
    2. 是持久的(android:persistent="true")
    3. 使用平台签名。

B> grantDefaultSystemHandlerPermissions -> 将使用 FLAG_PERMISSION_GRANTED_BY_DEFAULT 授予运行时权限。

  • 如果您的应用被视为“默认平台处理程序应用”(即您的应用“预计开箱即用”,如相机、拨号器、短信、日历等,您可以阅读更多在方法 grantDefaultSystemHandlerPermissions() 中)。

除此之外,您的系统应用程序需要请求用户授予危险权限,只要它的 targetSdk 设置为 23。

关于Android Marshmallow, "dangerous"保护级别和系统组件/应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32422587/

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