IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Obtenir chemin de la carte SD externe pour Android >= 4.0 ?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Billets dans le blog
    15
    Par défaut Obtenir chemin de la carte SD externe pour Android >= 4.0 ?
    Bonjour, je développe une application visant les smartphones android d'api valant au moins 4.0 (en m'excusant pour ce français pas très correct).
    Le grand soucis que je rencontre, c'est pour accéder de manière universelle à la carte externe.

    En effet, la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.getExternalStorageDirectory()
    ne renvoie pas forcément le chemin vers la carte SD externe, ne serait-ce que sur plusieurs modèles de la marque Samsung.
    AInsi, ayant sur mon Samsung Galaxy Grand, cette méthode me renvoie le chemin "/storage/emulated/0" alors qu'après vérification à l'aide d'une application explorateur de fichiers, il se trouve que le chemin vers ma carte sd externe est "/storage/extSdCard".

    Existe-t-il donc un moyen de déterminer le chemin correct vers la carte sd externe ?

  2. #2
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    J'utilise les méthodes suivantes qui fonctionnent sur sur les versions 4.1.x :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    	private static String SecondStorage() {
    		Map envs = System.getenv();
    		Set keys = envs.keySet();
    		Iterator i = keys.iterator();
    		String res = null;
    		while (i.hasNext()) {
    			String k = (String) i.next();
    			String v = (String) envs.get(k);
    			if (k.contains("SECOND") && k.contains("STORAGE")) {
    				int f = v.indexOf(":");
    				if (f < 0)
    					res = v;
    				else
    					res = v.substring(0, f);
    				break;
    			}
    		}
    		return res;
    	}
     
    	public static File defRep(String rep) {
    		File sdCard = Environment.getExternalStorageDirectory();
    		dirSvg = new File(SecondStorage()); // fonctionne en version android 4.1.2
    		if (dirSvg.canExecute())
    			dirSvg = new File(dirSvg.getAbsolutePath(), rep);
    		else
    			dirSvg = new File(sdCard.getAbsolutePath(), rep);
    		dirSvg.mkdir();
    		return dirSvg;
    	}
    Mais il semble que cela ne soit plus fonctionnel à partir des versions 5. Je ne dispose pas de tels équipements pour le tester

    Cordialement.

    Pierre

  3. #3
    Membre émérite
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Billets dans le blog
    15
    Par défaut
    Merci pour votre réponse

    J'ai aussi trouvé une astuce qui consiste à lire la propriété système "EXTERNAL_STORAGE" : sur stackoverflow.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getenv("EXTERNAL_STORAGE");
    Par contre vous avez raison concernant les versions d'android 5 ou plus :
    • J'ai réalisé un simple programme de test, qui crée un dossier sur la carte sd, puis y enregistre du contenu à l'aide du microphone
    • Sur mon périphérique Android 4.2.2, mon périphérique 4.4 ainsi que mon émulateur api 19 : tout semble fonctionner
    • Par contre sur mon émulateur d'api 23 (Android 6.0), il parvient apparemment à créer le dossier, mais pas le fichier audio temporaire. Est-ce dû à un problème de permission ? Il me faut essayer d'en voir plus



    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix lecteur externe pour carte SD 32 Gb
    Par Bluedeep dans le forum Périphériques
    Réponses: 4
    Dernier message: 30/01/2012, 12h33
  2. [VBA E] explorateur pour obtenir chemin de dossier
    Par gruget dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/02/2007, 14h31
  3. Réponses: 6
    Dernier message: 18/05/2006, 09h37
  4. Ajouter des librairies externes pour la compilation en C++
    Par Roming22 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2005, 10h15
  5. Réponses: 20
    Dernier message: 19/12/2004, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo