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 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android权限管理--权限类型 -> 正文阅读

[移动开发]Android权限管理--权限类型

目录

1.普通权限(normal)

2.运行时权限(dangerous)

3.签名权限(signature)

4.特殊权限(privileged)

查看android权限的等级

判断应用是否拥有对应权限


?Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。

1.普通权限(normal)

此类权限允许访问超出应用沙盒的数据和执行超出应用沙盒的操作。但这些数据和操作对用户隐私及对其他应用的操作带来的风险非常小。

2.运行时权限(dangerous)

运行时权限也称为危险权限,此类权限授予应用对受限数据的额外访问权限,并允许应用执行对系统和其他应用具有更严重影响的受限操作。因此需要先在应用中请求运行时权限,然后才能访问受限数据或执行受限操作。当应用请求运行时权限时,系统会显示运行时权限弹窗提示。

3.签名权限(signature)

当应用声明了其他应用已定义的签名权限时,如果两个应用使用同一证书进行签名,系统会在安装时向前者授予该权限。否则,系统无法向前者授予该权限。(注意:有些签名权限不适合第三方应用使用。)

该权限只需要在manifest中声明使用,同时应用和这类权限定义者拥有一样的签名系统就会默认授予应用这类权限;系统授予这类权限后应用无需像运行时权限一样动态申请。

4.特殊权限(privileged)

特殊权限与特定的应用操作相对应。只有平台和原始设备制造商 (OEM) 可以定义特殊权限。此外,如果平台和 OEM 想要防止有人执行功能特别强大的操作(例如通过其他应用绘图),通常会定义特殊权限。系统设置中的特殊应用访问权限页面包含一组用户可切换的操作。其中的许多操作都以特殊权限的形式实现。每项特殊权限都有自己的实现细节。系统会为特殊权限分配“appop”保护级别。

该权限只需要在manifest中声明使用,同时拥有系统签名且不是预置到 **/priv_app/ (如:system/priv-app)目录下,系统就会默认授予;如果应用是预置到 **/priv_app/ 目录下则需要在配置文件privapp-permissions-platform.xml中配置权限信息,否则系统不会授予权限,并且也会无法通过cts测试

查看android权限的等级

在系统源码中找到文件 /frameworks/base/core/res/AndroidManifest.xml ,这个文件中定义了系统权限等信息。

如 WRITE_MEDIA_STORAGE权限 具体如下:

权限名称:android.permission.WRITE_MEDIA_STORAGE

权限等级为:signature|privileged (该权限既是signature也是privileged权限)

<!-- @SystemApi @TestApi Allows an application to write to internal media storage
     @hide  -->
<permission android:name="android.permission.WRITE_MEDIA_STORAGE"
    android:protectionLevel="signature|privileged" />


如 READ_CONTACTS权限 具体如下:

权限名称:android.permission.READ_CONTACTS

权限等级为:dangerous (该权限为运行时权限,也就是需要应用去动态申请)

<!-- Allows an application to read the user's contacts data.
    <p>Protection level: dangerous
-->
<permission android:name="android.permission.READ_CONTACTS"
    android:permissionGroup="android.permission-group.UNDEFINED"
    android:label="@string/permlab_readContacts"
    android:description="@string/permdesc_readContacts"
    android:protectionLevel="dangerous" />

同时,也可以如下adb命令来获取权限等级

adb shell dumpsys package permision |grep -i prot

判断应用是否拥有对应权限

使用如下命令查看 adb shell dumpsys package com.miui.home

下面的install permissions记录的是该应用拥有的普通权限以及签名权限的信息,如果应用申请的权限被系统授予了,在对应权限后面就会显示 granted=true

相反,如果没有搜到相关权限的字符串,说明该应用没有声明使用这个权限

C:\Users\Administrator>adb shell dumpsys package com.miui.home
Activity Resolver Table:
... ...
... ...
Packages:
  Package [com.miui.home] (41dff44):
    userId=10089
    pkg=Package{724982d com.miui.home}
install permissions:
      android.permission.REAL_GET_TASKS: granted=true
      com.android.settings.permission.CLOUD_SETTINGS_PROVIDER: granted=true
      android.permission.WRITE_SETTINGS: granted=true
      miui.autoinstall.config.permission.AUTOINSTALL: granted=true
      android.permission.SET_PROCESS_LIMIT: granted=true
      android.permission.MODIFY_AUDIO_SETTINGS: granted=true
      miui.os.permisson.INIT_MIUI_ENVIRONMENT: granted=true
      android.miui.permission.SHELL: granted=true
      android.permission.SYSTEM_ALERT_WINDOW: granted=true

为什么应用在manifest中申请了signature权限或者privileged权限,但是还报错没有权限错误

1.对于signature权限,先判断应用是否拥有平台签名。可以通过dump命令来判断,执行 adb shell dumpsys package 包名 |findstr -i signatures 和adb shell dumpsys package android | findstr signatures,对比两者的签名是否一致。

2.对于privileged权限,先判断应用的预置路径。是否预置到.../priv-app/路径下(获取通过包信息查看应用的flag是否带有privileged),如果是就把/system/etc/permissions/的配置文件pull出来,配置文件为:privapp-permissions-platform.xml,查看自己的应用是否在这两个文件里面配置了,如果没有配置则需要在代码中进行配置。(可以将修改的文件push到/system/etc/permissions/目录,然后重启手机验证是否生效)

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:32:50  更:2022-03-16 22:34:16 
 
开发: 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/24 19:10:04-

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