gpt4 book ai didi

android - 如何在运行时检查 android 安全权限?

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

此问题之前曾在 How does Android enforce permissions? 上被问过.虽然那里的讨论很好,但问题仍未完全回答。

在开发环境中,当应用程序尝试执行某些需要未在 AndroidManifest.xml 中声明的权限的操作时,将抛出异常。那么运行时系统是如何实现运行时检查的呢?

我想这很可能是在核心框架中完成的,它可能需要也可能不需要本地代码的支持。但是我不知道AOSP中的哪些源代码文件与此相关。

最佳答案

Android 使用了很多标准的 Linux(内核?)机制,尤其是在硬件限制方面。

每个应用程序都会被分配一个新的唯一 (Linux-) 用户 ID,每当创建应用程序进程时,系统都会使用该用户 ID 创建它。除非您删除应用程序,否则 ID 永远不会改变。这意味着为了访问较低的系统级别,您的应用程序将显示为特定用户,并且适用于用户的每个 (Linux-) 权限系统也将适用于您的应用程序。

如果您在 list 中请求 WRITE_EXTERNAL_STORAGE,您的应用也将成为具有写入该存储的权限的 (Linux-) 组(称为 sdcard_rw)的成员。文件系统的权限被强制执行,只允许写入 system 用户(=owner)和 sdcard_rw 组,其他任何人(=other)只能读取。另见 Is Google blocking apps writing to SD cards

通过这样做,Android 几乎不需要做任何事情,除了设置它在应用程序启动后生成的进程的正确 UID/GID 之外,其余的都在较低级别处理。不属于某个组的应用程序根本无法访问某些硬件。

权限列表 <> 组映射:platform.xml

还有一些(Android 软件)限制基于您的应用程序签名和/或仅通过查找您的应用程序请求的权限:例如ContextImpl#checkPermission() - 但必须在允许受限操作的代码的每个入口点检查这些权限。

人们不时会发现一些方法,例如以编程方式打开 GPS,因为某处缺少这样的检查。

关于android - 如何在运行时检查 android 安全权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368785/

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