Permission 调试笔记

d97cb89c3bd5ab5f233b93f6a5990e36.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、安全架构设计

二、应用签名

三、用户ID 和文件访问

四、使用权限

五、正常权限和危险权限

六、自定义权限

七、动态申请权限案例

Android 是一个权限分隔的操作系统,其中每个应用都有其独特的系统标识(Linux 用户ID 和组 ID)。系统各部分也分隔为不同的标识。Linux据此将不同的应用以及应用与系统分隔开来。

其他更详细的安全功能通过“权限”机制提供,此机制会限制特定进程可以执行的具体操作,并且根据URI权限授权临时访问特定的数据段。

一、 安全架构设计

Android安全架构的中心设计点是:
在默认情况下任何应用都没有权限执行对其他应用、操作系统或用户有不利影响的任何操作。这包括读取或写入用户的私有数据(例如联系人或电子邮件)、读取或写入其他应用程序的文件、执行网络访问、使设备保持唤醒状态等。

由于每个 Android 应用都是在进程沙盒中运行,因此应用必须显式共享资源和数据。它们的方法是声明需要哪些权限来获取基本沙盒未提供的额外功能。应用以静态方式声明它们需要的权限,然后Android 系统提示用户同意。

二、应用签名

所有APK(.apk 文件)都必须使用证书签署,其私钥由开发者持有。此证书用于识别应用的作者。证书不需要由证书颁发机构签署;Android应用在理想情况下可以而且通常也是使用自签名证书。证书在 Android 中的作用是识别应用的作者。这允许系统授予或拒绝应用对签名级权限的访问,以及授予或拒绝应用获得与另一应用相同的 Linux身份的请求。

比如:
声明一个安全权限,可用于限制对此或其他应用程序的特定组件或功能的访问。

5de2c3c864d243337277a7d269cdce66.jpeg

权限声明

三、用户ID 和文件访问

在安装时,Android为每个软件包提供唯一的 Linux 用户 ID。此ID 在软件包在该设备上的使用寿命期间保持不变。在不同设备上,相同软件包可能有不同的 UID;重要的是每个软件包在指定设备上的UID是唯一的。

由于在进程级实施安全性,因此任何两个软件包的代码通常都不能在同一进程中运行,因为它们需要作为不同的 Linux用户运行。您可以在每个软件包的 AndroidManifest.xml 的 manifest 标记中使用 sharedUserId 属性,为它们分配相同的用户ID。这样做以后,出于安全目的,两个软件包将被视为同一个应用,具有相同的用户ID 和文件权限。

为保持安全性,只有两个签署了相同签名(并且请求相同的 sharedUserId)的应用才被分配同一用户ID

应用存储的任何数据都会被分配该应用的用户ID,并且其他软件包通常无法访问这些数据。使用 getSharedPreferences(String, int)、openFileOutput(String, int)或 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)创建新文件时,可以使用 MODE_WORLD_RE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值