blob: decb77cca632191f9b4f90ebcfa44108b886fc05 [file] [log] [blame]
package com.android.bugreportsender;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* Provides a scrolling text view previewing a named section of a
* bugreport.
*/
public class BugReportPreviewActivity extends Activity {
private static final String TAG = "BugReportPreview";
private TextView mText;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(com.android.bugreportsender.R.layout.bugreport_preview);
mText = (TextView) findViewById(R.id.preview);
if (icicle != null && icicle.getString("text") != null) {
mText.setText(icicle.getString("text"));
} else {
Intent intent = getIntent();
if (intent == null) {
Log.w(TAG, "No intent provided.");
return;
}
Uri uri = intent.getData();
String section = intent.getStringExtra("section");
if (section == null || section.length() == 0) {
section = "SYSTEM LOG";
}
Log.d(TAG, "Loading " + uri);
InputStream in = null;
try {
// TODO: do this in a background thread, using handlers and all that nonsense.
in = getContentResolver().openInputStream(uri);
String text = BugReportParser.extractSystemLogs(in, section);
mText.setText(text);
} catch (FileNotFoundException fnfe) {
Log.w(TAG, "Unable to open file: " + uri, fnfe);
mText.setText("Unable to open file: " + uri + ": " + fnfe);
return;
} catch (IOException ioe) {
Log.w(TAG, "Unable to process log.", ioe);
mText.setText("Unable to process log: " + ioe);
return;
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ioe) {
// ignore
}
}
}
}
@Override
protected void onSaveInstanceState(Bundle icicle) {
CharSequence text = mText.getText();
if (text != null) {
icicle.putString("text", mText.getText().toString());
}
}
}