android 11后文件读写访问权限申请

简介: android 11后文件读写访问权限申请

android 11后对文件读写访问权限管理 与 android 10又有了新的要求,导致在读写或者访问时出现error:java.io.FileNotFoundException: /storage/emulated/0/file_path open failed: EACCES (Permission denied),以下为android 11文件管理权限申请办法

import android.provider.Settings
 
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R){
    val uri = Uri.parse("package:${BuildConfig.APPLICATION_ID}")
 
    startActivity(
        Intent(
            Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION,
            uri
        )
    )
}


回忆android 10 文件访问权限申请


step 1: AndroidManifest中添加权限申请配置

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
 
<application android:requestLegacyExternalStorage="true">
 
 
  <provider android:name="androidx.core.content.FileProvider"
            android:authorities="com.xxx.xxx.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths_app" />
  </provider>
 
 
</application>


step 2: res/xml 资源文件夹下创建file_paths_app.xml 名称可以随意,与provider中配置resource同步

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <paths>
        <external-path
            name="external-path"
            path="." />
 
        <external-files-path
            name="external-files-path"
            path="." />
 
        <external-cache-path
            name="external-cache-path"
            path="." />
 
        <files-path
            name="files-path"
            path="." />
 
        <cache-path
            name="cache-path"
            path="." />
    </paths>
</resources>
Tag 对应的路径
root-path  根目录/
files-path /data/user/0/<package_name>/files 或者/data/data/<package_name>/files 这两个目录指向相同的位置
cache-path /data/user/0/<package_name>/cache 或者 /data/data/<package_name>/cache
external-path  /storage/emulated/0或者/sdcard/
external-files-path    /storage/emulated/0/Android/data/<package_name>/files 或者 /sdcard/Android/data/<package_name>/files
external-cache-path    /storage/emulated/0/Android/data/<package_name>/cache 或者 /sdcard/Android/data/<package_name>/cache


step 3:调用文件读写权限申请

AppPermissionReq.INSTANCE.permissionReq(
            this,
            defPermissions,
            object : PassPermission {
                override fun unauthorized() {
                }
 
                override fun authorized() {
                }
            })


目录
相关文章
|
4天前
|
Android开发
Android网络访问超时
Android网络访问超时
13 2
|
4天前
|
Android开发
Android studio 2021.3.1不生成iml文件
Android studio 2021.3.1不生成iml文件
18 5
|
4天前
|
Java Shell Android开发
android 权限申请
android 权限申请
18 5
|
4天前
|
XML API 数据库
Android权限
Android权限 【5月更文挑战第3天】
12 0
|
4天前
|
Android开发
Android stdio 无法新建或打开AIDL文件(解决方法)
Android stdio 无法新建或打开AIDL文件(解决方法)
12 0
|
4天前
|
Android开发
android string.xml文件中的整型和string型代替
android string.xml文件中的整型和string型代替
|
4天前
|
Android开发 开发者
Android打开开发者权限
Android打开开发者权限
16 0
Android--adb权限拒绝访问(permission denied)解决
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/78222147 用户机已经root了,但是在执行删除系统文件出现permission denied,查找了下原因: 默认运行所有命令时都仍然是普通用户身份,除非显式切换到root用户。
4563 0
|
1天前
|
编解码 数据库 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【5月更文挑战第18天】在竞争激烈的应用市场中,一个流畅且直观的用户界面(UI)对于安卓应用的成功至关重要。本文将探讨五种提升安卓应用用户界面性能的技巧,包括合理布局设计、优化资源使用、利用硬件加速、内存管理以及响应式编程。通过这些方法,开发者可以创建出既美观又高效的应用体验,从而吸引和保留用户。
|
2天前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结