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()); } } }