• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
onCreate(Bundle icicle)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
onSaveInstanceState(Bundle icicle)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