Les application exécutées sous Android 11 ne peuvent plus accéder en lecture ou en écriture à certains emplacements obtenus par les fonctions SysRepCarteStockage ou SysRepStockageExterne. Le billet "Août 2021, Google demande de relever le niveau d'API cible des applications Android afin de les déployer dans le Play Store" du blog du support détaille le sujet.
Pour pouvoir effectuer une migration des données vers un emplacement autorisé, les applications existantes déjà installées sur les appareils ont une possibilité d'accès à un emplacement maintenant interdit dans lequel elles ont créé des fichiers (données HFSQL Mobile, images, xml, ini...).
Cette possibilité permet d'effectuer une copie d'un fichier utilisé dans un emplacement maintenant interdit, vers un nouvel emplacement répondant aux nouvelles règles de Google (vers un dossier obtenu avec fonction SysRepStockageExterne avec les constantes sseApp* (recommandé), ou la fonction fRepDonnées).
Afin d'activer cette possibilité de lecture pour une application, il faut ajouter l'attribut preserveLegacyExternalStorage dans son manifeste accessible lors de la génération : - lancer l'assistant de génération de l'application Android :
- à l'étape "Configuration",
- clic sur "Configuration avancée",
- clic sur "Editer le manifeste",
- dérouler et sélectionner le nœud "Application",
- clic sur "Ajouter un attribut",
- donner le nom "android:preserveLegacyExternalStorage",
- donne la valeur ""true",
- valider par OK,
- valider l'édition du manifeste par OK,
- terminer la génération de l'application.
Cette solution est réservée à une application mise à jour sur un appareil. Elle ne peut pas être utilisée par une nouvelle installation d'une application. Une nouvelle installation peut encore accéder à ces emplacements, uniquement en utilisant la permission MANAGE_EXTERNAL_STORAGE (cf billet).
Liens utiles sur le sujet : |