IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 2021-08-13 android权限机制 -> 正文阅读

[移动开发]2021-08-13 android权限机制


权限文件标识符

??在是使用Android studio的Device File Explorer的时候,可以看到文件的各种权限,permissions使用的10位字段表示。
在这里插入图片描述
** ??在Android中,每一个应用是一个独立的用户,对于10位字段的权限标识符 drwxrwxrwx **

  • 第1位:d表示文件夹,-表示文件

  • 第2-4位:rwx,表示这个文件的拥有者(创建这个文件的应用)用户对该文件的权限

  • r:读

  • w:写

  • x:执行

  • 第5-7位:rwx,表示跟文件拥有者用户同组的用户对该文件的权限

  • 第8-10位:rwx,表示其他用户组的用户对该文件的权限


权限机制

??在系统6.0之后加入了运行时权限功能,将所有权限分为了两类:普通权限和危险权限:

??普通权限是指那些不会直接威胁到用户安全和隐私的权限,对于这部分权限申请,只要在AndroidManifest.xml中添加权限申请,系统会自动帮我们进行授权。

??? 危险权限则表示那些可能会触及用户隐私或者对设备安全性造成影响的权限,如获取设备联系人信息、定位设备的地理位置等,对于这部分权限申请采取运行时权限功能,除了需要在AndroidMan-ifest.xml中添加权限申请,还需要由用户手动点击授权才可以。

危险权限有以下9组:

1、CALENDAR + READ_CALENDAR——读取用户的日历数据 + WRITE_CALENDAR——写入用户的日历数据

2、CAMERA

  • CAMERA——访问相机设备

3、CONTACTS

  • READ_CONTACTS——读取用户的联系人数据
  • WRITE_CONTACTS——写入用户的联系人数据
  • GET_CONTACTS——访问帐户服务中的帐户列表

4、LOCATION

  • ACCESS_FINE_LOCATION——访问精确的位置
  • ACCESS_COARSE_LOCATION——访问大致位置

5、MICROPHONE

  • RECORD_AUDIO——录制音频

6、PHONE

  • READ_PHONE_STATE——只读访问电话状态
  • CALL_PHONE——在不通过拨号用户界面的情况下发起电话呼叫
  • READ_CALL_LOG——读取用户的调用日志
  • WRITE_CALL_LOG——写入(但不读取)用户的调用日志数据
  • ADD_VOICEMAIL——向系统中添加语音邮件
  • USE_SIP—— 使用SIP服务
  • PROCESS_OUTGOING_CALLS——查看向外呼叫期间所拨打的号码(在API 29废弃)

7、SENSORS

  • BODY_SENSORS——从传感器中访问数据

8、SMS

  • SEND_SMS——发送SMS消息
  • RECEIVE_SMS——接收SMS消息
  • READ_SMS——读取SMS消息
  • RECEIVE_MMS——接收WAP推送消息
  • RECEIVE_WAP_PUSH——监视传入的MMS消息

9、STORAGE

  • READ_EXTERNAL_STORAGE——读取外部存储
  • WRITE_EXTERNAL_STORAGE——写到外部存储器

??危险权限一共有9组24种权限。需要注意的是,对于每组权限,只要用户授予了其中任何一种权限,整个权限组都会被授予给应用

自定义权限

????除了使用系统提供的权限,我们还可以自定义权限。当我们想有一个应用的Activity可以被其他应用启动,但是需要其他应用具备启动的权限时,我们就可以在自己的应用中定义一个权限,其他应用只有声明这一权限,才可以成功启动我们的Activity。


首先,在被启动应用的AndroidManifest文件中声明自定义权限,示例代码如下:

<permission
    android:name="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"
    android:protectionLevel="normal"
    android:label="自定义权限"

??还需要在标签中声明permission属性

   android:permission="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"

??在其他应用中,如果想启动该Activity,就必须在AndroidManifest文件中声明该自定义权限,否则将会抛出SecurityException异常。

<uses-permission android:name="com.example.selfpermissondemo.permisson.OPEN_ACTIVITY"></uses-permission>

?name是自定义权限的名称,protectionLevel是权限的安全级别,可以使用normal、dangerous、signature,、signatureOrSystem中的一种,label则是权限的简短描述。
  • normal表示权限是低风险的,不会对系统、用户或其他应用程序造成危害。

  • dangerous表示权限是高风险的,系统将可能要求用户输入相关信息,才会授予此权限。

  • signature告诉Android,只有当应用程序所用数字签名与声明此权限的应用程序所有数字签名相同时,才能将权限授给它。

  • signatureOrSystem告诉Android,将权限授给具有相同数字签名的应用程序或Android包类,这一级别适用于非常特殊的情况,比如多个供应商需要通过系统影像共享功能时。

另外一个是android:permissionGroup属性,表示一个权限组。可以将权限放在一个组中,但对于自定义权限,应该避免设置此属性。如果确实希望设置此属性,可以使用以下属性代替:android.permission-group.SYSTEM_TOOLS。

参考

权限机制
Android 文件访问权限的四种模式
详解Android权限机制

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:43:16  更:2021-08-15 15:44:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:07:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码