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 {//正常的业务处理逻辑}
相关文章:
Android 13以上版本读写SD卡权限适配
如题,最近工作上处理的问题,把解决方案简单逻列出来,供有需要的朋友参考之 解决方案: 1、配置权限 <uses-permission android:name"android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name&q…...
并查集模板:食物链详解
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int N 50010;static int n,m; //n个动物,m局判断static int[] p new int[N]; //p[i]是i的根节点static int[] d new int[N]; //d[i]表示i到…...
使用WAF防御网络上的隐蔽威胁之反序列化攻击
什么是反序列化 反序列化是将数据结构或对象状态从某种格式转换回对象的过程。这种格式通常是二进制流或者字符串(如JSON、XML),它是对象序列化(即对象转换为可存储或可传输格式)的逆过程。 反序列化的安全风险 反…...
05. 交换机的基本配置
文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1:交换机的基本原…...
yolo将标签数据打到原图上形成目标框
第一章 目标:为了查看自己在标注标签时是否准确,写了这段代码来将标注的框打到原图上 第二章 步骤:进行反归一化得到坐标画出矩形框 第二行是目标图片对应的txt,第三行是目标图片 第三章 全部代码如下: import cv2 import …...
002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红
【ai阅读源码-dolphinscheduler】 DolphinScheduler 开发手册1、软件要求2、克隆代码库3、编译打包4、代码风格5、新建数据库,导入元数据。6, 启动后端6.1 启动api-server 6.2 启动master-server6.3 启动worker-server 7 启动前端 DolphinScheduler 开发…...
python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录
文章目录 1. 选择日志文件格式: 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式,如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件: 使⽤Python的文件操作功能打开日志文件,以便…...
代码随想录算法训练营DAY6 | 哈希表(1)
DAY5休息一天,今天重启~ 哈希表理论基础:代码随想录 Java hash实现 :java 哈希表-CSDN博客 一、LeetCode 242 有效的字母异位词 题目链接:242.有效的字母异位词 思路:设置字典 class Solution {public boolean isAnag…...
【嵌入式学习】C++QT-Day3-C++基础
笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函…...
表贴式PMSM的直接转矩控制(DTC)MATLAB仿真模型
微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 表贴式PMSM的直接转矩控制(DTC),直接使用滞环控制对转矩和磁链进行控制,相对于传统的FOC控制而言,其不需要进行解耦变换,在此次的有以下几点需要注意:…...
详解OpenHarmony各部分文件在XR806上的编译顺序
大家好,今天我们来谈一谈编程时一个很有趣的话题——编译顺序。我知道,一提到编译可能大家会感到有点儿头疼,但请放心,我不会让大家头疼的。我们要明白,在开始写代码之前,了解整个程序的编译路径是十分有必…...
【美团】无人机-大数据开发工程师
更新时间:2024/01/29 工作地点:北京市 事业群:到家事业群 工作经验:3年 部门介绍 为了更好地提升城市即时配送的效率与体验,美团于2017年启动了无人机配送服务的探索,通过科技创新推动履约工具变革&#x…...
微服务系统设计:横向扩展和纵向扩展的对比
微服务扩展性:水平扩展 vs 垂直扩展 特点水平扩展垂直扩展扩展单位增加微服务实例增加单个实例的资源 (CPU,内存)方向向外,增加节点向上,增加单个节点的资源复杂性随着实例数量的增加,管理难度更大管理更简单…...
Java基于SpringBoot+Vue的网上超市管理系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
HTTP中POST、GET、PUT、DELETE方式的区别
GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作&#x…...
77.Go中interface{}判nil的正确姿势
文章目录 一:interface{}简介二、interface{}判空三:注意点四:实际案例 一:interface{}简介 在go中的nil只能赋值给指针、channel、func、interface、map或slice类型的变量 interface 是否根据是否包含有 method,底层…...
ES实战回顾
1、你用的集群节点情况? 一个ES集群,18个节点,其中3个主节点,15个数据节点,500G左右的索引数据量,没有单独的协调节点,它的每个节点都可以充当协调功能; 2、你们常用的索引有哪些&a…...
Mysql 删除数据
从数据表中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。DELETE语句基本语法格式如下: DELETE FROM table_name [WHERE <condition>]; table_name指定要执行删除操作的表;“[WHERE <condition>]”为可选参数&a…...
CSS设置单行文字水平垂直居中的方法
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>单行文字水平垂直居中</title><style>div {/* 给div设置宽高 */width: 400px;height: 200px;margin: 100px auto;background-color: red;/…...
数论与图论
数论🎈 筛质数 最普通的筛法O(nlogn): void get_primes2(){for(int i2;i<n;i){if(!st[i]) primes[cnt]i;//把素数存起来for(int ji;j<n;ji){//不管是合数还是质数,都用来筛掉后面它的倍数st[j]true;}} } 诶氏筛法 O(nloglogn)&#…...
8公里巷道,最小误差仅0.6%,天宝耐特携L2pro解锁矿山井下高效安全测量
随着数字矿山建设的加速推进,空间数据采集技术成为矿山数字化转型的重要支撑。在此背景下,天宝耐特在华南某大型金矿完成了灵光L2pro手持SLAM三维激光扫描技术的深度应用实践,以硬核技术破解矿山作业难题,实现井下数字孪生底座构建…...
技能组合艺术:OpenClaw串联QwQ-32B实现复杂工作流
技能组合艺术:OpenClaw串联QwQ-32B实现复杂工作流 1. 为什么需要工作流串联 当我第一次接触OpenClaw时,最让我兴奋的不是它能完成某个单一任务,而是它能够将多个技能像乐高积木一样组合起来。这种能力让我想到了现实工作中的场景——很少有…...
SEO_2024年最新SEO趋势与高效优化方法介绍
<h2>2024年最新SEO趋势解析:为百度收录打造高效优化方法</h2> <p>在互联网迅速发展的今天,搜索引擎优化(SEO)依然是网站流量和曝光的关键。2024年,百度作为中国最大的搜索引擎,也不断更新…...
3个实用技巧:Qwen Code多语言支持让开发者效率提升40%
3个实用技巧:Qwen Code多语言支持让开发者效率提升40% 【免费下载链接】qwen-code Qwen Code is a coding agent that lives in the digital world. 项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code 在全球化协作日益频繁的开发环境中ÿ…...
ddclient与主流网络服务集成:PPP、DHCP、systemd和cron的完美搭配
ddclient与主流网络服务集成:PPP、DHCP、systemd和cron的完美搭配 【免费下载链接】ddclient Ddclient updates dynamic DNS entries for accounts on a wide range of dynamic DNS services. 项目地址: https://gitcode.com/gh_mirrors/dd/ddclient ddclien…...
OpenClaw+Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF:学术论文助手搭建实录
OpenClawQwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF:学术论文助手搭建实录 1. 为什么需要学术论文助手 作为一名经常需要阅读大量文献的研究者,我长期被三个问题困扰:一是PDF文献的摘要提取效率低下,二是参考文献格式…...
极速获取全平台歌词:163MusicLyrics跨平台解析工具使用指南
极速获取全平台歌词:163MusicLyrics跨平台解析工具使用指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否经常遇到想听的歌曲找不到匹配歌词的情况&a…...
【PAT甲级真题】- Shopping in Mars (25)
题目来源 Shopping in Mars (25) 题目描述点击链接自行查看 注意点: 输出时按照区间左端点从小到大输出 思路简介 简单的滑动窗口 我做了一个小处理 因为题目实际上要求找的是大于等于目标值的区间 所以移动左指针的条件写成 l>r&&sum>m 这样我认…...
手把手教你用LiuJuan Z-Image:从下载到出图,小白也能搞定高清人像生成
手把手教你用LiuJuan Z-Image:从下载到出图,小白也能搞定高清人像生成 想用AI生成专业级人像照片却不知从何入手?本文将带你从零开始,一步步掌握LiuJuan Z-Image Generator的使用方法。无需编程基础,跟着这份保姆级教…...
WebREPL完全指南:突破嵌入式开发环境限制 开发者的无线调试解决方案
WebREPL完全指南:突破嵌入式开发环境限制 开发者的无线调试解决方案 【免费下载链接】webrepl WebREPL client and related tools for MicroPython 项目地址: https://gitcode.com/gh_mirrors/we/webrepl 价值定位:如何突破传统开发环境限制&…...
