Envoyer un fichier créer par l'appli en pièce jointe d'un mail
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 :
Code:
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();
}
} |
Notez que j'ouvre le fichier en MODE_WORLD_READABLE.
Autre part, dans mon activité qui envoie le mail :
Code:
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();
}
} |
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.
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