最近在做Android 应用开发,IDE是android studio ,  使用的版本配置如下:compileSdk 32
buildToolsVersion '32.0.0'
defaultConfig {applicationId "com.example.gzpersonmanager"minSdk 21targetSdk 32versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

可以看到使用的框架版本是32.1.1 ,使用的时最新的Android 12 版本的API和SDK, 开发过程中涉及到一个场景,就是要把APP的SQLite 数据库,通过外部存储,使用代码,写入APP的内部数据存储 /data/data/packetname/files/databases/ 目录下,主要是为了数据库安全,简单来说就是一个把外部Sqlite数据库文件,在APP启动过程中,复制到APP私有的data/data/目录下,实现数据库本地更新。
但是在过程中遇到一个错误,提示是 没有权限访问外部存储,刚开始是以为没有授权,检查

AndroidManifest.xml ,文件,权限设置如下:是没有问题的。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

文件路径暴露映射也没有问题,配置如下:没有问题!

    <providerandroid:name="androidx.core.content.FileProvider"android:authorities="com.example.gzpersonmanager.fileprovider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/authfileinfo" /></provider>

xml/authfileinfo 文件配置如下: 内部的/data/data/包名/files 和 外部存储路径都映射为真实地址。

没有问题。

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"><files-path path="." name="files" /><external-files-path path="." name="sdcard" /></paths>

但是真机调试,还是调试没有权限 ! 百度好多文件,所有的方法都测试了,依旧不行。

最后,终于发现一篇文章,官方在Android 11 以后,使用的存储分区管理,默认所有的应用,可以访问自己的APP私有内部存储,即 /data/data/包名/* 目录,和外部存储的媒体目录,外部存储的媒体目录需要授权后,即可访问,这些目录包括 相册,音乐,和视频目录,除此之外的其他外部存储目录,均无法访问,包括 sdcard/Android/ 和 sdcard/Download目录, 这就是主要原因,知道原因就好解决了。

1.使用存储分区访问, 网上很多帖子都说 requestLegacyExternalStorage =“true” 就可以,事实上,亲自测试,次方法在 targetSdk>29 以上的版本中,依旧无效。
可以使用Scoped Storage 适配来访问外部存储的其他目录,这是第一种方法。

2就是我现在使用的方法, 将框架版本改为28,即 targetSdk:28 , 然后重新删除APP,然后Sync Gradle 工程,就可以完美解决这个问题。

现在就可以完美解决这个问题了。

Android 11 高版本 出现外部存储无法访问的问题相关推荐

  1. 【Android取证篇】华为外部存储支持备份的数据类型-支持第三方应用

    [Android取证篇]华为外部存储支持备份的数据类型-支持第三方应用 ​ 数据保存至外置存储卡或USB存储,"无需网络连接"!,支持部分第三方应用的数据备份-[suy] 文章目录 ...

  2. 小米android11适配计划,小米、vivo、一加等宣布Android 11 beta版本适配计划

    谷歌已经在昨天面向Pixel系列机型用户推出了Android 11 beta版本更新,用户注册beta测试计划即可率先升级到新版本的测试版本.除了谷歌亲儿子系列产品之外,部分国内手机厂商的产品也是能够 ...

  3. 小米4 第三方re奇兔_小米、vivo、一加等宣布Android 11 beta版本适配计划

    谷歌已经在昨天面向Pixel系列机型用户推出了Android 11 beta版本更新,用户注册beta测试计划即可率先升级到新版本的测试版本.除了谷歌亲儿子系列产品之外,部分国内手机厂商的产品也是能够 ...

  4. Pixel 4刷机常见问题指南(Android 11 211001版本可用!)

    前言 继上次pixel 2xl刷机指南发布后,有很多小伙伴进行了反馈,能帮助到各位pixel 2xl机友我也倍感荣幸,现在推出pixel 4刷机全指南,重复相似内容可去pixel 2xl指南查找研究, ...

  5. android 外部存储列表,如何获取Android设备的已安装外部存储列表

    我使用/ proc / mounts文件来获取可用存储选项的列表 public class StorageUtils { private static final String TAG = " ...

  6. android逐行写入读取_Android外部存储-读取,写入,保存文件

    android逐行写入读取 Android external storage can be used to write and save data, read configuration files ...

  7. android 项目高版本换成低版本

    android的应用程序安装包APK如果是在高版本的android jar上开发的是无法在低版本的android SDK上跑的,所以我们需要将我们已经开发好的应用程序换上低版本的android jar ...

  8. Android学习笔记-判断手机外部存储是否可读写

    通过调用Environment的getExternalStorageState()方法来判断外部存储的状态: /* 查检外部存储读取与写入功能是否可用 */ public boolean isExte ...

  9. Android Killer 高版本卡死,Android Killer反编译卡死的一个解决方案

    半吊子安卓逆向水平,也就会用android killer看看反编译的java源码...玩ctf的时候经常android killer莫名卡死,大致如图: 一般看安卓题就为了换换脑子冷静下,几次碰到这个 ...

最新文章

  1. python映射类型有哪些_什么是python中唯一的映射类型
  2. gdb调试 print打印不出变量值或者不准确
  3. 老弟,Redis 6.0 除了多线程,别忘了这个牛逼特性!
  4. php临时目录没有文件夹里,PHP上传 找不到临时文件夹的解决方法
  5. python操作excel_使用Python操作Excel时必学的3个库
  6. 匿名包装器(function(){})()
  7. REMarkerClusterer
  8. 低配,比又穷又忙更可怕
  9. 计算机网络及应用的说课稿,第一课计算机网络及应用说课稿
  10. 文本处理工具--正则表达式
  11. 当使用 position 属性时,请始终设置 !DOCTYPE 声明:当使用 float 属性时,请始终设置 !DOCTYPE 声明:
  12. 诺基亚s40机破权相关说明
  13. ps制作计算机考试证件照,如何通过PS制作一寸证件照(超详细流程)?
  14. 最近抖音,小红书上面有个很火的天气推送的公众号,可以给自己爱的人进行定时推送. 效果如下,结合亲生经历给大家讲述一下操作流程。整个项目代码目前十分规整,项目代码整体400多行 ,就直接分享出来吧.
  15. 随机生成一注双色球号码 - - (要求同色号码不重复 )
  16. 函数对称性常见公式_函数的对称性
  17. B站视频封面图片获取_CodingPark编程公园
  18. 因数分解——Pollard' p-1 Pollard rho
  19. 声音(音乐)分类综述
  20. L1-078 吉老师的回归

热门文章

  1. 照片分辨率怎么修改?怎么修改照片分辨率?
  2. MySQL union 和 union all的区别
  3. DeepLearning学习指导
  4. JAVA计算机毕业设计电商平台客流统计系统Mybatis+系统+数据库+调试部署
  5. 如何卸载uVision2
  6. hdu 4183 Pahom on Water 网络流
  7. Downie 4 for Mac(最好用的视频下载软件)v4.3.5直装版
  8. A6082-基于Android的李白诗集APP的设计与实现
  9. 具有信息数字化功能的计算机硬件,数字化档案信息安全管理策略论文
  10. android.content.res.Resources$NotFoundException: Resource ID #0xff3f92d5