1 package com.android.bugreportsender; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.widget.TextView; 9 10 import java.io.FileNotFoundException; 11 import java.io.IOException; 12 import java.io.InputStream; 13 14 /** 15 * Provides a scrolling text view previewing a named section of a 16 * bugreport. 17 */ 18 public class BugReportPreviewActivity extends Activity { 19 20 private static final String TAG = "BugReportPreview"; 21 22 private TextView mText; 23 24 @Override 25 protected void onCreate(Bundle icicle) { 26 super.onCreate(icicle); 27 28 setContentView(com.android.bugreportsender.R.layout.bugreport_preview); 29 mText = (TextView) findViewById(R.id.preview); 30 31 if (icicle != null && icicle.getString("text") != null) { 32 mText.setText(icicle.getString("text")); 33 } else { 34 Intent intent = getIntent(); 35 if (intent == null) { 36 Log.w(TAG, "No intent provided."); 37 return; 38 } 39 Uri uri = intent.getData(); 40 String section = intent.getStringExtra("section"); 41 if (section == null || section.length() == 0) { 42 section = "SYSTEM LOG"; 43 } 44 Log.d(TAG, "Loading " + uri); 45 InputStream in = null; 46 try { 47 // TODO: do this in a background thread, using handlers and all that nonsense. 48 in = getContentResolver().openInputStream(uri); 49 String text = BugReportParser.extractSystemLogs(in, section); 50 mText.setText(text); 51 } catch (FileNotFoundException fnfe) { 52 Log.w(TAG, "Unable to open file: " + uri, fnfe); 53 mText.setText("Unable to open file: " + uri + ": " + fnfe); 54 return; 55 } catch (IOException ioe) { 56 Log.w(TAG, "Unable to process log.", ioe); 57 mText.setText("Unable to process log: " + ioe); 58 return; 59 } finally { 60 try { 61 if (in != null) { 62 in.close(); 63 } 64 } catch (IOException ioe) { 65 // ignore 66 } 67 } 68 } 69 } 70 71 @Override 72 protected void onSaveInstanceState(Bundle icicle) { 73 CharSequence text = mText.getText(); 74 if (text != null) { 75 icicle.putString("text", mText.getText().toString()); 76 } 77 } 78 } 79