32 votes

Stockage amovible (externe) sdcard path par les fabricants

J'ai cherché sur Google mais il est très difficile de trouver quels fabricants/modèles utilisent quel chemin pour la carte SD/le stockage externe.

  • Je ne parle PAS du chemin de stockage interne qui peut être trouvé par :

Environment.getExternalStorageDirectory()

Je sais que getExternalStorageDirectory() pointe parfois vers la carte SD externe sur certains appareils.

Voici ce que j'ai trouvé comme chemin commun pour le chemin externe (je ne suis pas sûr de savoir quel fabricant utilise quel chemin) :

/emmc
/mnt/sdcard/external_sd
/mnt/external_sd
/sdcard/sd
/mnt/sdcard/bpemmctest
/mnt/sdcard/_ExternalSD
/mnt/sdcard-ext
/mnt/Removable/MicroSD
/Removable/MicroSD
/mnt/external1
/mnt/extSdCard
/mnt/extsd
/mnt/usb_storage  <-- usb flash mount
/mnt/extSdCard  <-- usb flash mount
/mnt/UsbDriveA  <-- usb flash mount
/mnt/UsbDriveB  <-- usb flash mount

C'est ce que j'ai trouvé en cherchant sur Google.

J'ai besoin de scanner l'ensemble du stockage interne + externe + clé USB pour rechercher un certain fichier. Si je manque un chemin, veuillez l'ajouter à la liste ci-dessus. Si quelqu'un connaît les chemins utilisés par chaque fabricant, merci de les partager avec nous.

13voto

Jeff Sharkey Points 275

Bonne nouvelle ! Dans KitKat, il y a maintenant une API publique pour interagir avec ces périphériques de stockage secondaire partagé.

Le nouveau Context.getExternalFilesDirs() y Context.getExternalCacheDirs() peuvent renvoyer plusieurs chemins, y compris les dispositifs primaires et secondaires. Vous pouvez alors itérer sur ces chemins et vérifier Environment.getStorageState() y File.getFreeSpace() pour déterminer le meilleur endroit pour stocker vos fichiers. Ces méthodes sont également disponibles sur ContextCompat dans la bibliothèque support-v4.

Notez également que si vous êtes seulement intéressé par l'utilisation des répertoires retournés par Context vous n'avez plus besoin du READ_ o WRITE_EXTERNAL_STORAGE les permissions. À l'avenir, vous aurez toujours un accès en lecture/écriture à ces répertoires, sans avoir besoin d'autorisations supplémentaires.

Les applications peuvent également continuer à fonctionner sur des appareils plus anciens en mettant fin à leur demande d'autorisation comme ceci :

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="18" />

11voto

oceanuz Points 56

J'ai également commencé par une liste comme la vôtre (désolé, je n'ai pas pu trouver la source originale) et je continue à ajouter des chemins collectés à partir des commentaires des utilisateurs. Il y a des doublons à la liste ci-dessus.

    /storage/sdcard1 //!< Motorola Xoom
    /storage/extsdcard  //!< Samsung SGS3
    /storage/sdcard0/external_sdcard  // user request
    /mnt/extsdcard
    /mnt/sdcard/external_sd  //!< Samsung galaxy family
    /mnt/external_sd
    /mnt/media_rw/sdcard1   //!< 4.4.2 on CyanogenMod S3
    /removable/microsd              //!< Asus transformer prime
    /mnt/emmc
    /storage/external_SD            //!< LG
    /storage/ext_sd                 //!< HTC One Max
    /storage/removable/sdcard1      //!< Sony Xperia Z1
    /data/sdext
    /data/sdext2
    /data/sdext3
    /data/sdext4

Pour ce que vous voulez réaliser (scanner tous les chemins possibles pour certains fichiers), je pense qu'il est tout à fait impossible de le faire de cette façon (en utilisant une liste de chemins connus). Certains chemins sur le même appareil ont même changé entre les mises à jour d'Android.

0voto

Dante Points 466

Avez-vous essayé :

Environment.getExternalStoragePublicDirectory.getExternalStorageDirectory(String type);

Où le type est le répertoire défini par Android dont vous avez besoin, comme Environment.DIRECTORY_DOWNLOADS, qui vous donnera le répertoire de téléchargement.

Ce n'est pas "getExternalStorageDirectory" mais "getExternalStoragePublicDirectory". Notez que pour chaque appareil Android, il retournera l'endroit où se trouve le stockage (par exemple : /mnt/external_sd). Cela a fonctionné sur mon transformer 101, un nexus 10 et un galaxy s2. J'en avais besoin pour télécharger un fichier sur le stockage

Voici la documentation http://developer.Android.com/reference/Android/os/Environment.html

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