web-dev-qa-db-fra.com

Comment créer un dossier / fichier public dans Android 10

Android API 29 a de gros changements concernant les fichiers et les dossiers. Je n'ai trouvé aucun moyen jusqu'à présent pour créer un dossier dans le stockage interne visible. Chaque dossier que je crée peut être vu par mon application uniquement.

J'écris une application qui crée des fichiers de données qui doivent être choisis par d'autres applications, par exemple le commandant total de les copier sur une destination. Tout a fonctionné bien jusqu'à l'activation de l'API 29. Certains de mes clients utilisent des téléphones Pixel et ils utilisent Android 10.

Comment puis-je créer un dossier et des fichiers dans Android 10 qui sont publics?

Cela a été obsolète:

Environment.getExternalStorageDirectory();
Environment.getExternalStoragePublicDirectory(type);

et quand j'utilise

File root = context.getExternalFilesDir(null);

Les fichiers créés ne peuvent être vus que par mon application. Comment puis-je atteindre le comportement valide avant Android 10?

Merci d'avance.

8
Grisgram

À partir de Android 10, vous devez utiliser SAF et laisser l'utilisateur choisir le répertoire à l'aide de ACTION_OPEN_DOCUMENT_TREE.

Si vous avez besoin d'un exemple simple. Vous pouvez le trouver ici

Alternativement, vous pourriez utiliser requestLegacyExternalStorage = true Dans Manifeste lorsque votre application n'est pas nouvelle publiée. Mais c'est quelque chose qui ne devrait pas être utilisé pour la libération future, car il s'agit d'une solution à court terme fournie par Google.

Remarque: Dans les prochains versions d'Android, l'utilisateur ne sera pas en mesure de choisir l'ensemble du répertoire de fichiers externe et de télécharger le répertoire, de sorte que malheureusement, gardez à l'esprit que nous n'allons pas avoir accès à ceux-ci! Pour plus d'informations, vous pouvez cliquer sur ICI

1
Khamidjon Khamidov