Android外部存储无法访问问题解决方法

 更新时间:2022年01月28日 14:58:30   作者:全栈胖叔叔-瓜州  
大家好,本篇文章主要讲的是Android外部存储无法访问问题解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
 最近在做Android 应用开发,IDE是android studio ,  使用的版本配置如下:

compileSdk 32
buildToolsVersion '32.0.0'
defaultConfig {
    applicationId "com.example.gzpersonmanager"
    minSdk 21
    targetSdk 32
    versionCode 1
    versionName "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" />

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

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.example.gzpersonmanager.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android: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外部存储无法访问问题解决方法的文章就介绍到这了,更多相关Android外部存储无法访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Android仿微信照片选择器实现预览查看图片

    Android仿微信照片选择器实现预览查看图片

    这篇文章主要介绍了Android仿微信照片选择器实现预览查看图片的相关资料,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android使用PullToRefresh完成ListView下拉刷新和左滑删除功能

    Android使用PullToRefresh完成ListView下拉刷新和左滑删除功能

    ListView下刷新刷功能相信从事Android开发的猿友们并不陌生,本文就带领一些刚入门android的朋友或者一起爱分享的朋友来简单的实现ListView的下拉刷新和左滑删除效果。感兴趣的朋友一起看看吧
    2016-11-11
  • Android自定义View接收输入法输入的内容

    Android自定义View接收输入法输入的内容

    最近的一个项目需要实现需求,希望从一个View上调用输入法和接收输入法传过来的内容,下面这篇文章就给大家分享下Android自定义View接收输入法输入的内容的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • 玩转Android之Drawable的使用

    玩转Android之Drawable的使用

    这篇文章主要为大家详细介绍了Android之Drawable的使用方法,帮助大家系统的学习一下Drawable的使用,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 如何在Android Studio下进行NDK开发

    如何在Android Studio下进行NDK开发

    这篇文章主要介绍了如何在Android Studio下进行NDK开发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Android BroadcastReceiver广播机制概述

    Android BroadcastReceiver广播机制概述

    这篇文章主要为大家详细介绍了Android BroadcastReceiver广播机制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 详解Android中fragment和viewpager的那点事儿

    详解Android中fragment和viewpager的那点事儿

    本文主要对Android中fragment和viewpager进行详细介绍,具有一定的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • Android中Protobuf的基本使用介绍

    Android中Protobuf的基本使用介绍

    大家好,本篇文章主要讲的是Android中Protobuf的基本使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • RxJava和Retrofit2的统一处理单个请求示例详解

    RxJava和Retrofit2的统一处理单个请求示例详解

    这篇文章主要给大家介绍了关于RxJava和Retrofit2的统一处理单个请求的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Kotlin协程Channel源码示例浅析

    Kotlin协程Channel源码示例浅析

    这篇文章主要为大家介绍了Kotlin协程Channel源码示例浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论