Fix bug report generation temp file

Use application space to store the temporary file if it cannot be stored in
the default place.
This commit is contained in:
Guillaume Beraudo 2011-10-04 10:10:42 +02:00
parent b3f7a20857
commit 53b2381ad8

View file

@ -73,25 +73,31 @@ public class AboutActivity extends Activity implements OnClickListener {
thread.start(); thread.start();
} }
private void onLogsRead(String logs) { private File writeLogs(String logs, File directory) {
File tempFile; File tempFile = null;
if (logs == null) {
Toast.makeText(this, getString(R.string.about_logs_not_found), Toast.LENGTH_SHORT).show();
} else {
try { try {
tempFile = File.createTempFile("bugreport", ".txt"); tempFile = File.createTempFile("bugreport", ".txt", directory);
tempFile.deleteOnExit(); tempFile.deleteOnExit();
FileWriter writer = new FileWriter(tempFile); FileWriter writer = new FileWriter(tempFile);
writer.append(logs); writer.append(logs);
return tempFile;
} catch (IOException e) { } catch (IOException e) {
Toast.makeText(this, getString(R.string.about_error_generating_bugreport_attachement), Toast.LENGTH_LONG).show(); Toast.makeText(this, getString(R.string.about_error_generating_bugreport_attachement), Toast.LENGTH_LONG).show();
Log.e(e, "couldn't write to temporary file"); Log.e(e, "couldn't write to temporary file");
return; return null;
} finally { }
thread = null;
} }
private void onLogsRead(String logs) {
if (logs == null) {
Toast.makeText(this, getString(R.string.about_logs_not_found), Toast.LENGTH_SHORT).show();
} else {
File tempFile = writeLogs(logs, null);
if (tempFile == null) {
// If writing to temporary file to default location failed
// Write one to our storage place
tempFile = writeLogs(logs, getFilesDir());
}
Intent intent = new Intent(Intent.ACTION_SEND); Intent intent = new Intent(Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@ -114,6 +120,7 @@ public class AboutActivity extends Activity implements OnClickListener {
@Override @Override
public void run() { public void run() {
onLogsRead(logs); onLogsRead(logs);
thread=null;
} }
}); });
super.run(); super.run();