当前位置: 首页 > news >正文

Android 13以上版本读写SD卡权限适配

在这里插入图片描述

如题,最近工作上处理的问题,把解决方案简单逻列出来,供有需要的朋友参考之
解决方案:
1、配置权限

  <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /><uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>

2、动态申请权限

//相关核心代码,PermissionUtils工具类private static final String[] RECORDING_PERMISSION_ABOVE_33 = {Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};//Android 13以后的版本,包括13private static final String[] RECORDING_PERMISSION_UNDER_33 = {Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO,Manifest.permission.READ_MEDIA_VIDEO,Manifest.permission.READ_MEDIA_IMAGES,Manifest.permission.READ_MEDIA_AUDIO,};public static String[] getRecordingPermission() {return android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU? RECORDING_PERMISSION_ABOVE_33 : RECORDING_PERMISSION_UNDER_33;}/*** 检查多个权限* <p>* 检查权限** @param permissions 权限数组* @param context     Context* @return true 已经拥有所有check的权限 false存在一个或多个未获得的权限*/public static boolean checkPermissionsGroup(Context context, String[] permissions) {for (String permission : permissions) {if (!checkPermission(context, permission)) {return false;}}return true;}public static void requestPermissions(Activity activity, String[] permissions, int requestCode) {// 先检查是否已经授权if (!checkPermissionsGroup(activity, permissions)) {ActivityCompat.requestPermissions(activity, permissions, requestCode);}}

使用示例

 String[] permissions = PermissionUtils.getRecordingPermission();if (!checkResult) {PermissionUtils.requestPermissions(this, permissions, PERMISSION_REQUEST_CODE);} else {//正常的业务处理逻辑}
http://www.lryc.cn/news/290271.html

相关文章:

  • 并查集模板:食物链详解
  • 使用WAF防御网络上的隐蔽威胁之反序列化攻击
  • 05. 交换机的基本配置
  • yolo将标签数据打到原图上形成目标框
  • 002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红
  • python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录
  • 代码随想录算法训练营DAY6 | 哈希表(1)
  • 【嵌入式学习】C++QT-Day3-C++基础
  • 表贴式PMSM的直接转矩控制(DTC)MATLAB仿真模型
  • 详解OpenHarmony各部分文件在XR806上的编译顺序
  • 【美团】无人机-大数据开发工程师
  • 微服务系统设计:横向扩展和纵向扩展的对比
  • Java基于SpringBoot+Vue的网上超市管理系统
  • HTTP中POST、GET、PUT、DELETE方式的区别
  • 77.Go中interface{}判nil的正确姿势
  • ES实战回顾
  • Mysql 删除数据
  • CSS设置单行文字水平垂直居中的方法
  • 数论与图论
  • 海外云手机三大优势
  • AndroidStudio安装教程基础篇
  • RK3568 Android 13 系统裁剪
  • Ubuntu 隐藏Telnet主机SSH服务时显示版本信息问题
  • webpack环境配置
  • 树控件、下拉框、文本框常用测试用例
  • Java把列表数据导出为PDF文件,同时加上PDF水印
  • const与readonly详解
  • ArcGIS Pro 如何计算长度和面积等数据?
  • IntelliJ创建一个springboot工程
  • Spark入门02-Spark开发环境配置(idea环境)