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

amal0elmimouni 3 Messages postés mercredi 27 juin 2012Date d'inscription 18 juillet 2012 Dernière intervention - 12 juil. 2012 à 16:20 - Dernière réponse : Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention
- 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
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 15 juil. 2012 à 10:30
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

Merci Twinuts 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Twinuts
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 15 juil. 2012 à 10:36
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
amal0elmimouni 3 Messages postés mercredi 27 juin 2012Date d'inscription 18 juillet 2012 Dernière intervention - 18 juil. 2012 à 08:36
0
Merci
Merci bcp pour ta réponse.

je vais essayer ça
Commenter la réponse de amal0elmimouni
amal0elmimouni 3 Messages postés mercredi 27 juin 2012Date d'inscription 18 juillet 2012 Dernière intervention - 18 juil. 2012 à 14:50
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
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 18 juil. 2012 à 21:53
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.