Application d'autorisation d'accès en lecture et en écriture de fichier après Android 11

Après Android 11, il existe de nouvelles exigences pour la gestion des droits d'accès en lecture et en écriture des fichiers et Android 10, entraînant l'erreur : la méthode d'application pour les autorisations de gestion de fichiers 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
        )
    )
}

Rappel de l'application d'autorisation d'accès aux fichiers Android 10

Étape 1 : Ajouter la configuration de l'application d'autorisation dans 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>

Étape 2 : Créez file_paths_app.xml sous le dossier de ressources res/xml. Le nom peut être arbitraire et il est synchronisé avec la configuration des ressources dans le fournisseur.

<?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>
Le chemin correspondant au Tag
répertoire racine chemin-racine/
files-path /data/user/0/<package_name>/files ou /data/data/<package_name>/files Ces deux répertoires pointent vers le même emplacement
cache-path /data/user/0/<package_name>/cache 或者 /data/data/<package_name>/cache
chemin-externe /storage/emulated/0 ou /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

Étape 3 : Appelez l'application d'autorisation de lecture et d'écriture de fichier

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

                override fun authorized() {
                }
            })

Guess you like

Origin blog.csdn.net/m0_63587743/article/details/128305408