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 :

repertoire mnt/sdcard/ tablette


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut repertoire mnt/sdcard/ tablette
    Bonjour, je suis en train de developper une application qui sera destiner pour le tablette Galaxy tab.

    dans mon application je genere un fichier sur ma carte sd emuler avec un emulateur comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File exlFile = new File(Environment.getExternalStorageDirectory().toString()+"/download","write_test.xls");
    donc maintenant dans mon repertoire Download de ma carte sd je trouve bien mon fichier

    Mais comment savoir l'arborescence de la carte sd monté sur une tablette, car les emulateur dans eclipse on tous le chemin

    mnt/sdcard/..

    mais pour les tablettes?

    Merci

  2. #2
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je ne suis pas sur que la question concerne une carte SD additionnelle (externe), mais dans ce cas, je ne crois pas qu'il y ait de support pour une carte SD externe dans Android.

    Ce que Android appelle "sdCard" (aussi appelé external-storage) est la partie du device visible comme carte SD quand le device est branché sur un ordinateur. Rien à voir donc avec une carte sd "externe".

    Chaque constructeur est libre d'implémenter les carte SD additionnelles comme bon lui chante. (sur Samsung c'est en général: /mnt/extSdCard)
    Il y a un code compliqué pour énumérer la table de mount et "trouver" ainsi le chemin de la carte externe, mais impossible de remettre la main dessus (si quelqu'un retrouve le bout de code !)


    Quelques remarques toutefois:

    getExternalStorageDirectory() renvoit un "File", autant l'utiliser (et s'éviter le passage par des StringBuilders cachés avec une concaténation de chaîne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exlFile = new File(new File(Environment.getExternalStorageDirectory(),"download"),"write_test.xls");
    Ensuite, le répertoire "download" est obtenu par getExternalStoragePublicDirectory()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"write_test.xls");
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut
    merci l'ami,

    mon but et que mon application généré un fichier Excel, après que j'ai généré ce fichier je voulais savoir dans quel répertoire le mettre dans la tablette, car habituellement avec mes emulateur android dans éclipse smart phone ou tablette le chemin était

    mnt/sdcard/....

    donc /mnt/extSdCard et une carte externe additionnel

    et donc rien avoir avec mnt/sdcard/ external-storage(micor sd)

    c quoi phisiquement la sd externe "extSdCard" ou cela ce place ?

    donc si j'ai bien compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exlFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"write_test.xls");
    me garantis que l'utilisateur insérer une sdcard et le fichier ce généreras dans le répertoire Download.

    Mon but étais de le mettre dans le répertoire dropbox, sur le net ils disent de le mettre avec le chemin suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     File exlFile = new File(Environment.getExternalStorageDirectory().toString()+"/Android/data/com.dropbox.android/files/scratch/monrepertoire","write_test.xls");
    et que le repertoire "monrepertoire" ce trouve dans les répertoire de ma dropBox EN LOCAL afin que ce répertoire "monrepertoire" soit partagé avec d'autre utilisateur et synchronise quand il trouve une connexion internet.

  4. #4
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Même si nous ne sommes pas "amis" (du moins point encore), je crois que tu n'as pas bien compris mes propos (j'ai d'ailleurs répondu à la partie "dropbox" sur un autre thread je crois):


    1. Ne jamais utiliser "/mnt/xxxxx" comme "point d'ancrage". Le nom des volumes montés par le système peut varier d'une version à une autre, d'un device à un autre, ou même d'un utilisateur à un autre !
    2. Dans un device android il y a toujours une "sd-card". Mais contrairement à ce que l'on peut croire (d'autant que les fonctions permettant d'y accéder comporte le terme "External"), cela n'a rien à voir avec une carte "SD" externe. Il s'agit de la partition sur la mémoire interne correspondant à la partie visible depuis un PC de celle-ci. C'est cette partition qui contient les photos prises par la caméra (DCIM), les musiques, etc... Elle est donc en général, publique (il faut toutefois des permissions pour y accéder).
    3. Il n'y a pas de fonction dans le système permettant de détecter et/ou utiliser une carte SD externe (une vraie carte externe quoi). Et depuis Android 4.4, si une telle carte existe, Google recommande qu'aucune application n'ait le droit d'écrire sur cette carte dans les répertoires publics !
    4. Il y a toujours un répertoire "downloads" (voir mes exemples de code pour y accéder). Ce répertoire sera visible depuis n'importe quel PC, une fois le device connecté en USB.
    5. Il ne faut pas toujours croire ce qu'on lit sur le Net. Pour envoyer un fichier à DropBox, il existe un SDK spécifique (qui gérera, si besoin, la création du compte, le cache, etc...).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Il y a un code compliqué pour énumérer la table de mount et "trouver" ainsi le chemin de la carte externe, mais impossible de remettre la main dessus (si quelqu'un retrouve le bout de code !)
    J'utilise ça (c'est pas de moi)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    /**
     * @return Chemin vers la carte SD externe
     */
    public File getExternalSDCardDirectory()
    {
    	File sdcard = Environment.getExternalStorageDirectory();
    	String[] directories = getStorageDirectories();
    	if(directories.length > 1) {
    		for(String s : directories) {
    			if(!s.equals(Environment.getExternalStorageDirectory().getAbsolutePath().toString()))
    				sdcard = new File(s);
    		}
    	}
     
    	if(directories.length == 1) {
    		sdcard = new File(directories[0]);
    	}
     
    	return sdcard;
     
    }
     
    /**
     * Raturns all available SD-Cards in the system (include emulated)
     *
     * Warning: Hack! Based on Android source code of version 4.3 (API 18)
     * Because there is no standart way to get it.
     *
     * @return paths to all available SD-Cards in the system (include emulated)
     */
    public static String[] getStorageDirectories()
    {
    	// Final set of paths
    	final Set<String> rv = new HashSet<String>();
    	// Primary physical SD-CARD (not emulated)
    	final String rawExternalStorage = System.getenv("EXTERNAL_STORAGE");
    	// All Secondary SD-CARDs (all exclude primary) separated by ":"
    	final String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE");
    	// Primary emulated SD-CARD
    	final String rawEmulatedStorageTarget = System.getenv("EMULATED_STORAGE_TARGET");
    	if(TextUtils.isEmpty(rawEmulatedStorageTarget))
    	{
    		// Device has physical external storage; use plain paths.
    		if(TextUtils.isEmpty(rawExternalStorage))
    		{
    			// EXTERNAL_STORAGE undefined; falling back to default.
    			rv.add("/storage/sdcard0");
    		}
    		else
    		{
    			rv.add(rawExternalStorage);
    		}
    	}
    	else
    	{
    		// Device has emulated storage; external storage paths should have
    		// userId burned into them.
    		final String rawUserId;
    		if(Build.VERSION.SDK_INT < 17)
    		{
    			rawUserId = "";
    		}
    		else
    		{
    			final String path = Environment.getExternalStorageDirectory().getAbsolutePath();
    			final String[] folders = DIR_SEPORATOR.split(path);
    			final String lastFolder = folders[folders.length - 1];
    			boolean isDigit = false;
    			try
    			{
    				Integer.valueOf(lastFolder);
    				isDigit = true;
    			}
    			catch(NumberFormatException ignored)
    			{
    			}
    			rawUserId = isDigit ? lastFolder : "";
    		}
    		// /storage/emulated/0[1,2,...]
    		if(TextUtils.isEmpty(rawUserId))
    		{
    			rv.add(rawEmulatedStorageTarget);
    		}
    		else
    		{
    			rv.add(rawEmulatedStorageTarget + File.separator + rawUserId);
    		}
    	}
    	// Add all secondary storages
    	if(!TextUtils.isEmpty(rawSecondaryStoragesStr))
    	{
    		// All Secondary SD-CARDs splited into array
    		final String[] rawSecondaryStorages = rawSecondaryStoragesStr.split(File.pathSeparator);
    		Collections.addAll(rv, rawSecondaryStorages);
    	}
    	return rv.toArray(new String[rv.size()]);
    }
    Suffit juste d'appeler : getExternalSDCardDirectory() , ca marche plutôt bien sur les device que j'ai pu tester
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut
    Tu dis

    Dans un device android il y a toujours une "sd-card".

    oui mais c bien a nous de l'insérer sur le cote du téléphone tout de même.

    D'après mon analyse, si on inséré pas de la micro sd sur le cote du téléphone, impossible de généré mon fichier dans le répertoire download.

    Donc pour moi c'est obligé que mes utilisateur de mon application insére une micro sd sur leur telepone

    Merci

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Si un appareil n'a pas la possibilité d'avoir de SDCard , par exemple un nexus 5 getExternalStorageDirectory() retourne un chemin vers une partie de la mémoire interne du téléphone qui est alors considéré comme sdcard.
    Et comme dit précédemment chaque constructeur implémente cette mémoire (sdcard ou non) comme bon lui semble.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    501
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 501
    Points : 102
    Points
    102
    Par défaut
    Merci

Discussions similaires

  1. copier la structure d'un repertoire
    Par delire8 dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/10/2002, 22h52
  2. Renommer un repertoire
    Par Sitas dans le forum Langage
    Réponses: 5
    Dernier message: 14/08/2002, 11h56
  3. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  4. [TP]Lister les fichiers d'un répertoire
    Par nvtitan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 21/06/2002, 11h22
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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