Enregistrer un fichier sur une tablette Android [Résolu]

Messages postés
3
Date d'inscription
mercredi 27 juin 2012
Dernière intervention
18 juillet 2012
- - Dernière réponse : Twinuts
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
- 18 juil. 2012 à 21:53
Bonjour,

je développe une application android. j'ai une communication entre mon application (client) et un erveur web. j'utilise les servlet pour gérer cette communication. le serveur web doit générer un fichier xml et l'enregistrer sur ma tablette.

là j'ai réussi à créer le fichier xml et l'enregistrer sur le disque dur de mon pc.

try
{
DocumentBuilderFactory builderFactory = 	DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
//creating a new instance of a DOM to build a DOM tree.
Document doc = docBuilder.newDocument();
new AuthentificationServlet().createXml(doc);
out.println("  fichier xml enregistre  ");
}
catch(Exception e)
{
System.out.println(e);
}					
 
private void createXml(Document doc) throws TransformerException, IOException {
//creer un noeud
Element root  = doc.createElement("configuration");
//ajouter un noeud après le dernier fils noeud
doc.appendChild(root);
 
Element child =  doc.createElement("matricule");
root.appendChild(child);
 
Text text = doc.createTextNode("1234");
child.appendChild(text);
 
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
 
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
 
//creer string from xml tree
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = sw.toString();
 
 
File file = new File("c:/newxml.xml");
BufferedWriter  bw = new BufferedWriter (new OutputStreamWriter(new FileOutputStream(file)));
bw.write(xmlString);
bw.flush();
bw.close();	
}


Mais il me reste de l'enregistrer sur le disque dur de ma tablette.
je ne sais pas qu'est ce que je dois donner comme chemin à mon FileOutputStream pour qu'il enregistre ce fichier sur le disque dur de mon media Android

quelqu'un peut m'aider svp

merci bcp
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
3
Merci
Salut,

dans un premiers temps il faut que tu ajoutes les permissions :

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
  	
  
    ...
  
</manifest>


Ensuite tu peux utiliser le fichier comme un fichier classique (il faudra surement que tu utilises le chemin absolue ; avec l’émulateur tu risques d'avoir des erreurs mais si tu utilises ta tablette/téléphone en mode debug ça devrais passer (puis c'est plus fluide pour les tests)).

Au passage si tu veux stocker sur une SD, tu peux également t'aider de l'objet android.os.Environment:
// test si la partoche est montée et si elle est en lecture seule:
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state))
  Log.d(TAG, "ARG non montée :)");
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
  Log.d(TAG, "ARG lecture seule!");





-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Twinuts
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Re,

Pour ce qui est du chemin à utiliser ... seule toi le sait... la seule chose que je peux te dire c'est qu'il ne s'agit pas un système de fichiers à la MS donc pas de C:, etc...
il faut que tu te bases sur le fonctionnement des systèmes de fichiers unix '/' étant la racine.
Exemple chez moi la SD interne est sur /mnt/sdcard et l'externe sur /mnt/sdcard-ext.
Sauf si le système est root tu ne peux pas écrire où tu veux (exemple pas dans '/')


-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
3
Date d'inscription
mercredi 27 juin 2012
Dernière intervention
18 juillet 2012
0
Merci
Merci bcp pour ta réponse.

je vais essayer ça
Commenter la réponse de amal0elmimouni
Messages postés
3
Date d'inscription
mercredi 27 juin 2012
Dernière intervention
18 juillet 2012
0
Merci
J'ai trouvé que ce chemin comme numéro d'identification de l'instance de périphérique

USB\VID_0B05&PID_4E1F&MI_01\6&BB5DC1A&0&0001

Mais quand j'ai essayé ça n'a pas marché.

Stp est ce que tu peux me dire ou je peux avoir le chemin que tu m'as indiqué

Merci bcp
Commenter la réponse de amal0elmimouni
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,

Tu as potassé la doc de la class android.os.Environement ? ...visiblement non...

Avec le code suivant:
File data = Environment.getDataDirectory();
File dlCache = Environment.getDownloadCacheDirectory();
File extSdCard = Environment.getExternalStorageDirectory();
File root = Environment.getRootDirectory();
/* La doc donne un code d'exemple pour construire ta classe File et l'exploiter */
File alarm = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS);
File dcim = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File downloads = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File movies = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
File music = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
File notifications = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS);
File pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File podcasts = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS);
File ringtones = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES);
Log.e("TAG", "data:" + data.getAbsolutePath());
Log.e("TAG", "dlCache:" + dlCache.getAbsolutePath());
Log.e("TAG", "extSdCard:" + extSdCard.getAbsolutePath());
Log.e("TAG", "root:" + root.getAbsolutePath());
Log.e("TAG", "alarm:" + alarm.getAbsolutePath());
Log.e("TAG", "dcim:" + dcim.getAbsolutePath());
Log.e("TAG", "downloads:" + downloads.getAbsolutePath());
Log.e("TAG", "movies:" + movies.getAbsolutePath());
Log.e("TAG", "music:" + music.getAbsolutePath());
Log.e("TAG", "notifications:" + notifications.getAbsolutePath());
Log.e("TAG", "pictures:" + pictures.getAbsolutePath());
Log.e("TAG", "podcasts:" + podcasts.getAbsolutePath());
Log.e("TAG", "ringtones:" + ringtones.getAbsolutePath());


J'obtiens ceci sur un smartphone Motorola RAZR XT910 + android 4.0.4 ainsi que sur une tablette ASUS Transformer TF101 + android 4.0.3

data:/data
dlCache:/cache
extSdCard:/mnt/sdcard
root:/system
alarm:/mnt/sdcard/Alarms
dcim:/mnt/sdcard/DCIM
downloads:/mnt/sdcard/Download
movies:/mnt/sdcard/Movies
music:/mnt/sdcard/Music
notifications:/mnt/sdcard/Notifications
pictures:/mnt/sdcard/Pictures
podcasts:/mnt/sdcard/Podcasts
ringtones:/mnt/sdcard/Ringtones



-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.