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

Android14请求动态申请存储权限

Android14请求动态申请存储权限

Android14和Android15存储权限有增加多了选择部分,还是全部。一个小小的存储权限真的被它玩出了花来。本来Android13就将存储权限进行了3个细分,是图片,音频还是视频文件。

步骤一:AndroidManifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- Android 13版本适配,细化存储权限 --><uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /><uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /><!-- Android 14版本适配,部分允许还是全部允许--><uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
步骤二、引入Rxpermissions

你用其他请求库也行

 api 'com.jakewharton.rxbinding4:rxbinding:4.0.0'api 'com.github.tbruyelle:rxpermissions:0.12'
步骤三、定义请求方法
 // 联系:893151960void requestStoragePermission(Context mContext, PermissionListener permissionListener) {if (PermissionCheckUtil.checkPermissions(mContext, PermissionNewUtils.getImageMediaPermission(mContext))) {permissionListener.permission(true);} else {PermissionNewUtils.requestCombinedPermission((FragmentActivity) mContext, PermissionNewUtils.getImageMediaPermission(mContext), new Consumer<Permission>() {@Overridepublic void accept(Permission it) throws Throwable {if (it.granted) {permissionListener.permission(true);} else {boolean partGranted = false;// 部分同意if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {if (ContextCompat.checkSelfPermission(mContext,READ_MEDIA_VISUAL_USER_SELECTED) == PackageManager.PERMISSION_GRANTED) {permissionListener.permission(true);partGranted = true;}}if (!partGranted) {permissionListener.permission(false);if (it.shouldShowRequestPermissionRationale) {//禁止,不做操作Toast.makeText(context, "禁止了权限", Toast.LENGTH_SHORT).show();} else {Toast.makeText(context, "永久禁止了权限", Toast.LENGTH_SHORT).show();//永久禁止
//                                DialogUtilsKT.okAndCancel(
//                                    mContext,
//                                    mContext.getString(alwaysContent),
//                                    mContext.getString(R.string.ok_go_setting),
//                                    title = mContext.getString(alwaysTitle)
//                                ) {
//                                    PermissionNewUtils.startAppSetting(mContext)
//                                }}}}}});}}

项目demo结构图
在这里插入图片描述有问题或者需要源码都可以私信我

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 双路创新深度学习!TCN-Transformer+LSTM多变量时间序列预测(Matlab)
  • 【学术会议:中国杭州,机器学习和计算机应用面临的新的挑战问题和研究方向】第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)
  • go 读取excel
  • 04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码
  • 数据结构 - 树与二叉树
  • 连不上服务器,超时
  • 2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队
  • 数据中台建设方案汇报(可编辑的54页PPT)
  • ubuntu挂载磁盘或U盘
  • [杂谈-黑神话:悟空] 中国3A游戏的崛起之路:挑战与机遇并存
  • MFC -文件类控件
  • 【delphi】正则判断windows完整合法文件名,包括路径
  • 【深度学习】深度学习模型的加密及解密方案及源码
  • Python爬虫使用实例-umei
  • php环境搭建教程
  • @jsonView过滤属性
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 4. 路由到控制器 - Laravel从零开始教程
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • 编写高质量JavaScript代码之并发
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 马上搞懂 GeoJSON
  • 携程小程序初体验
  • k8s使用glusterfs实现动态持久化存储
  • ​渐进式Web应用PWA的未来
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​业务双活的数据切换思路设计(下)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #、%和$符号在OGNL表达式中经常出现
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #每日一题合集#牛客JZ23-JZ33
  • ${factoryList }后面有空格不影响
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (2.2w字)前端单元测试之Jest详解篇
  • (SERIES10)DM逻辑备份还原
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)js前端开发中设计模式之工厂方法模式
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法)硬币问题
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)h264中avc和flv数据的解析
  • (转)程序员疫苗:代码注入
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ***监测系统的构建(chkrootkit )
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net 6.0--通用帮助类--FileHelper
  • .net core Redis 使用有序集合实现延迟队列
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 的程序集加载上下文
  • .Net(C#)自定义WinForm控件之小结篇