Android 16 关于动态权限使用的变更

embedded/2024/12/22 3:39:27/

权限声明code

在 Android 中,权限的申请分为静态权限和动态权限。

静态权限

静态权限是指在应用的 AndroidManifest.xml 文件中声明的权限。这些权限在应用安装时就会被用户授予。常见的静态权限包括访问互联网、读取用户联系人等。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp"><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_CONTACTS"/><!-- 这种要特定系统app才能声明,不然运行时报错 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /></manifest>

动态权限

动态权限是指在运行时请求用户授权的权限。这种权限机制从 Android 6.0(API 23)开始引入。用户可以在运行时选择是否授予应用某些权限。

申请动态权限的步骤:

  1. 检查权限:在请求权限之前,先检查是否已经获得了该权限。
  2. 请求权限:如果权限未被授予,则请求该权限。
  3. 处理权限请求结果:用户作出响应后,需要处理权限请求的结果。
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {// 如果没有权限,则请求权限ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
} else {// 已经获得权限,可以执行相关操作
}// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {switch (requestCode) {case MY_PERMISSIONS_REQUEST_READ_CONTACTS:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {// 权限被授予} else {// 权限被拒绝}break;}
}

Google 变更说明

  • Google 对权限树和动态权限的支持将被废弃,将在Android 16(25Q2)中弃用相关API,如果没有人使用这些API,Google 可能也会在25Q2中将这些API变为无操作。
  • Google 鼓励开发者在应用程序清单中静态声明他们的权限,而不是动态定义权限。

Google will deprecate the some related APIs of permission trees and dynamic in Android 16 (25Q2).

APP list as below:

  • PackageManager#addPermission
  • PackageManager#addPermissionAsync
  • PackageManager#removePermission

Google Suggetion:  developers to declare their permissions statically inside their app manifest.


http://www.ppmy.cn/embedded/147697.html

相关文章

地理信息系统(Geographic Information System,GIS)

目录 主要组成部分 主要功能 应用领域 前沿技术与发展趋势 更多学术知识 主要组成部分 数据采集&#xff1a; 通过各种手段&#xff08;如遥感、卫星影像、GPS、地面调研等&#xff09;收集地理和空间数据。这些数据可以是矢量数据&#xff08;点、线、面&#xff09;或栅…

基于时间情境创造与 AI 智能名片 S2B2C 商城小程序源码的零售创新策略研究

摘要&#xff1a;本文聚焦于零售领域的创新发展&#xff0c;深入探讨了时间情境创造在零售中的重要性&#xff0c;并结合 AI 智能名片 S2B2C 商城小程序源码这一新兴技术手段&#xff0c;阐述其如何助力零售企业突破传统模式的局限。通过对国美线上线下融合案例的剖析&#xff…

linux CentOS系统上卸载docker

一、停止Docker服务 首先&#xff0c;需要停止Docker服务。使用systemctl命令来停止Docker服务&#xff1a; bash复制代码sudo systemctl stop docker二、卸载Docker软件包 接下来&#xff0c;使用CentOS的包管理器yum来卸载Docker软件包。根据安装的Docker版本和组件&#…

windows 使用python共享网络给另外一个网卡

# -*- coding: utf-8 -*- import subprocessdef open_share(to_shared_adapter, from_shared_adapter):"""打开以太网的网络共享:return: None"""powershell_script f"""# Register the HNetCfg library (once)# regsvr32 hnetc…

mac编译ijkplayer遇到问题

问题&#xff1a;./init-android.sh git version 2.44.0 pull ffmpeg base : command not founde.sh: line 2: : command not founde.sh: line 5: : command not founde.sh: line 6: tools/pull-repo-base.sh: line 9: syntax error near unexpected token elif ools/pull-re…

3D造型软件solvespace在windows下的编译

3D造型软件solvespace在windows下的编译 在逛开源社区的时候发现了几款开源CAD建模软件&#xff0c;一直囿于没有合适的建模软件&#xff0c;虽然了解了很多的模拟分析软件&#xff0c;却不能使之成为整体的解决方案&#xff0c;从而无法产生价值。opencascad之流虽然可行&…

我的“双胞同体”发布模式的描述与展望

当被“激情”晕染&#xff0c;重创标题、摘要探索“吸睛”。 (笔记模板由python脚本于2024年12月19日 15:23:44创建&#xff0c;本篇笔记适合喜欢编撰csdn博客的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免…

SparkSQL案例

SparkSQL案例 **案例描述&#xff1a;**某系统存储有用户的基本信息&#xff0c;包括用户的姓名、身份证号、手机号码。 数据集&#xff1a; 有用得着的评论或私信即可 需求分析&#xff1a; 将表中的数据进行过滤&#xff0c;只保留 80 后、90 后、00 后的用户信息&#x…