5 votes

Android Q - Comment obtenir le chemin réel du dossier "Téléchargements" ?

Avec Intent.ACTION_OPEN_DOCUMENT_TREE j'obtiens cette uri :

content://com.android.providers.downloads.documents/tree/downloads

Comment puis-je le convertir en /storage/emulated/0/Download - le vrai chemin ? Je ne veux pas utiliser

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

car il est déprécié.

EDIT : J'ai besoin du chemin réel de l'emplacement public pour les téléchargements, car sur Android Q, c'est le dossier où doivent être stockés les documents publics.

-1voto

Shahzad Ali Points 22

D'après la documentation, utilisez DCIM/... pour le RELATIVE_PATH, où ... est votre sous-répertoire personnalisé. Ainsi, vous obtiendrez quelque chose comme ceci :

  val resolver = context.contentResolver
  val contentValues = ContentValues().apply {
    put(MediaStore.MediaColumns.DISPLAY_NAME, "CuteKitten001")
    put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg")
    put(MediaStore.MediaColumns.RELATIVE_PATH, "DCIM/PerracoLabs")
  }

  val uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)

  resolver.openOutputStream(uri).use {
    // TODO something with the stream
  }

Notez que, comme RELATIVE_PATH est une nouveauté du niveau 29 de l'API, vous devrez utiliser cette approche sur les périphériques plus récents et utiliser getExternalStoragePublicDirectory() sur les plus anciens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X