Android 11 权限适配申请指南

Android 10 读写权限适配申请

Android 23开始,读写系统内部文件需要开始权限申请,本文介绍如何在Android29以上读写文件申请权限,如果项目中 build.gradle 的targetSdkVersion >= 29 ,只在Manifest文件中添加文件读写权限,会出现读写问题,如果targetSdkVersion = 29,通过在Manifest文件中设置requestLegacyExternalStorage=“true” 能解决问题,当targetSdkVersion >30 以后,要申请所有文件权限才能获取到写入权限。

AndroidManifest添加权限设置

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
  <application
        ...
        android:requestLegacyExternalStorage="true">

先判断又没有所有文件读写权限,切记不可直接申请文件读写权限,一样失败

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            // 先判断有没有权限
            if (Environment.isExternalStorageManager()) {
//                writeFile()
            } else {
                val intent = Intent(ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
                intent!!.data = Uri.parse("package:" + getPackageName())
                startActivityForResult(intent, 1000)
            }
      }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(
                Manifest.permission.WRITE_EXTERNAL_STORAGE
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            requestPermissions(
                arrayOf(
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.RECORD_AUDIO,
                ), 1
            )
        }

申请所有文件读写权限成功之后,可以开始文件读写。最近在学习音视频开发,在学习音频编码的过程中发现了此坑,此前在蓝牙开发中也出现过类似问题,谨以此文记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值