Bonjour,
Je souhaite que mon appli log certaines informations dans un fichier.
En cas d'erreur, je bascule sur une activité qui permet de m'envoyer un mail avec le message d'erreur obtenu. Je souhaiterai attacher le fichier de log en pièce jointe.
J'ai d'abord créer une class que je fais dériver de Activity dans laquelle j'ai écris la méthode writeInLog. Je fais ensuite dériver toutes mes activités de cette class afin de pouvoir utiliser cette méthode partout :
Notez que j'ouvre le fichier en MODE_WORLD_READABLE.
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 protected void writeInLog(String s, String nomActivite, boolean newSession) { String date = new String(new Date().toGMTString()); try { FileOutputStream fos = openFileOutput("log.txt", Context.MODE_WORLD_READABLE); if(newSession) { String entete = new String(date + " : -------------------------"+nomActivite+"-------------------------\n"); fos.write(entete.getBytes()); } fos.write(new String(date + " : " + s + "\n").getBytes()); fos.close(); } catch (IOException e) { Toast toast = Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG); toast.show(); } }
Autre part, dans mon activité qui envoie le mail :
Problème, avec cette façon de faire, le fichier est bien joint au mail, et je le reçois correctement sur ma boite mail. Mais celui-ci ne contient qu'une seule ligne : la dernière écrite en fait.
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 public void onButEnvoiMailClick(View v) { if(v instanceof Button) { final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("text/plain"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"nicolas@aciafr.com"}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, new String("AciaSMS erreur")); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message_erreur); emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file://"+getFilesDir()+"/log.txt")); this.startActivity(Intent.createChooser(emailIntent, "Envoi mail...")); this.finish(); } }
En ouvrant le fichier avec MODE_APPEND, le log garde bien toutes les lignes, mais l'appli d'envoi de mail ne peut plus y avoir accès.
Auriez-vous une solution à me soumettre ? Utiliser deux fichiers ? Comment faire ?
Merci d'avance
Partager