Android14请求动态申请存储权限

打印 上一主题 下一主题

主题 759|帖子 759|积分 2277

Android14请求动态申请存储权限

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

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2.     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  3.     <!-- Android 13版本适配,细化存储权限 -->
  4.     <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
  5.     <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
  6.     <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
  7.     <!-- Android 14版本适配,部分允许还是全部允许-->
  8.     <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
复制代码
步调二、引入Rxpermissions

你用其他请求库也行
  1. api 'com.jakewharton.rxbinding4:rxbinding:4.0.0'
  2. api 'com.github.tbruyelle:rxpermissions:0.12'
复制代码
步调三、定义请求方法

  1. // 联系:893151960
  2. void requestStoragePermission(Context mContext, PermissionListener permissionListener) {
  3.         if (PermissionCheckUtil.checkPermissions(mContext, PermissionNewUtils.getImageMediaPermission(mContext))) {
  4.             permissionListener.permission(true);
  5.         } else {
  6.             PermissionNewUtils.requestCombinedPermission((FragmentActivity) mContext, PermissionNewUtils.getImageMediaPermission(mContext), new Consumer<Permission>() {
  7.                 @Override
  8.                 public void accept(Permission it) throws Throwable {
  9.                     if (it.granted) {
  10.                         permissionListener.permission(true);
  11.                     } else {
  12.                         boolean partGranted = false;
  13.                         // 部分同意
  14.                         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
  15.                             if (ContextCompat.checkSelfPermission(
  16.                                     mContext,
  17.                                     READ_MEDIA_VISUAL_USER_SELECTED
  18.                             ) == PackageManager.PERMISSION_GRANTED
  19.                             ) {
  20.                                 permissionListener.permission(true);
  21.                                 partGranted = true;
  22.                             }
  23.                         }
  24.                         if (!partGranted) {
  25.                             permissionListener.permission(false);
  26.                             if (it.shouldShowRequestPermissionRationale) {
  27.                                 //禁止,不做操作
  28.                                 Toast.makeText(context, "禁止了权限", Toast.LENGTH_SHORT).show();
  29.                             } else {
  30.                                 Toast.makeText(context, "永久禁止了权限", Toast.LENGTH_SHORT).show();
  31.                                 //永久禁止
  32. //                                DialogUtilsKT.okAndCancel(
  33. //                                    mContext,
  34. //                                    mContext.getString(alwaysContent),
  35. //                                    mContext.getString(R.string.ok_go_setting),
  36. //                                    title = mContext.getString(alwaysTitle)
  37. //                                ) {
  38. //                                    PermissionNewUtils.startAppSetting(mContext)
  39. //                                }
  40.                             }
  41.                         }
  42.                     }
  43.                 }
  44.             });
  45.         }
  46.     }
复制代码
项目demo结构图
有问题或者必要源码都可以私信我

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表