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 :

Ecriture sur carte SD externe


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut Ecriture sur carte SD externe
    Bonjour,

    J'ai un Galaxy S5, Android 5.1, connecté à mon PC en usb, donc je teste directement. J'utilise Android Studio.
    J'ai créé une appli qui doit stocker des images sur la carte SD externe.
    Dans mon manifeste, j'ai mis l'autorisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    Je crée le fichier en utilisant le chemin de la SD externe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f = new File(Environment.getExternalStorageDirectory()+ File.separator + "test8.jpg");
    Au final, il écrit dans la mémoire interne sur la "racine".
    En visualisant le contenu du chemin j'ai ceci: "/storage/emulated/0/test8.jpg".
    Je suppose que cela vient du "réglage" d'Android Studio ou bien faut-il que l'appli soit sur la carte SD externe ?

    Merci pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Par défaut
    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File f = new File( "/storage/extSdCard/test8.jpg");
    maia ça plante l'appli.

  3. #3
    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 : 80
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Il semble que le nom qui permet d'identifier la carte SD n'est pas le même d'une marque à l'autre et ainsi qu'au sein même d'une marque.

    On m'avait préconisé la méthode suivante (qui s'avère efficace avec mon Samsung GlaxY S2 et mon Archos 7b Titanium) :

    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
        public 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());
            if (dirSvg.exists())
                dirSvg = new File(dirSvg.getAbsolutePath(), rep);
            else
                dirSvg = new File(sdCard.getAbsolutePath(), rep);
            dirSvg.mkdir();
            return dirSvg;
        }
    Cordialement.

    Pierre

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 259
    Par défaut
    Pour ma part (sony Z3 C) lorsque je transfère les applications du localstorage vers l'externalstorage avec les fonctions de bases d'Android (ou de la surcouche, je sais pas), elles sont transférées vers /storage/emulated/0/

    Or il s'avère que /storage/emulated/0/ est en réalité la mémoire flash interne du smartphone, la carte SD externe étant monté en /storage/emulated/1/.

    Je n'avais pas ce problème avec Kitkat, je n'ai pas souvenir de l'avoir eu avec lolipop 5.0.1, mais je l'ai bien avec la 5.1.1. Et vu quelques messages que j'ai pu voir sur des forums je ne suis pas le seul dans ce cas.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Le code ci-dessus est un peu bizarre... pour "trouver" la carte SD externe il faut parcourir les "mount-points" et en trouver un qui ne soit pas celui par défaut. Je vais essayer de retrouver le code en question, mais il est bien plus complexe que ça...

    Le support des cartes SD externes n'est pas *assuré* par Android.
    getExternalStorageDirectory, contrairement à ce que son nom laisse croire, permet d'avoir le répertoire racine de ce qui est visible *quand le téléphone est considéré comme disque SD* (branché en USB sur un ordi par exemple).
    Et il y a 100% de chance que ce truc soit sur la mémoire interne du device (puisqu'il peut ne pas y avoir de carte SD additionelle).

    En prime, depuis Android 5, cette carte "externe" est en lecture seule pour les applications (seul le système y a accès en écriture) il me semble.

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 259
    Par défaut
    Citation Envoyé par nicroman Voir le message
    En prime, depuis Android 5, cette carte "externe" est en lecture seule pour les applications (seul le système y a accès en écriture) il me semble.
    Oui, et c'est bien pénible d'ailleurs. Je en comprend pas pourquoi une telle restriction alors que l'on sait que les cartes internes sont limitées (très, parfois) en taille.
    Ensuite certaines application arrivent à y écrire (les gestionnaires de fichiers notamment mais pas que), d'autres non.
    Ensuite certaines y arrivaient avec la 5.0.1 mais plus avec la 5.1.

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

Discussions similaires

  1. Ecriture sur disque dur externe impossible sous Mac
    Par Auteur dans le forum Périphériques
    Réponses: 7
    Dernier message: 11/05/2010, 18h08
  2. Réponses: 6
    Dernier message: 16/09/2008, 22h06
  3. Lecture/Ecriture sur HDD externe USB
    Par rems033 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 16/05/2007, 18h12
  4. Ecriture sur un fichier Word: Pb Ouverture
    Par drinkmilk dans le forum ASP
    Réponses: 2
    Dernier message: 11/06/2004, 10h48
  5. Réponses: 2
    Dernier message: 27/02/2004, 14h47

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