problem with send me log
Posted
by Lynnooi
on Stack Overflow
See other posts from Stack Overflow
or by Lynnooi
Published on 2010-03-29T06:52:37Z
Indexed on
2010/03/29
6:53 UTC
Read the original article
Hit count: 407
Hi,
I had try to implement the send me log feature into my apps but I can't get it right. Can anyone please help me with it? In the logcat, it shows the errors:
03-29 21:23:37.636: ERROR/AndroidRuntime(820): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception 03-29 21:23:37.726: ERROR/AndroidRuntime(820): java.lang.RuntimeException: An error occured while executing doInBackground() 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at android.os.AsyncTask$3.done(AsyncTask.java:200) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:234) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:258) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.FutureTask.run(FutureTask.java:122) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.lang.Thread.run(Thread.java:1058) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): Caused by: java.lang.NullPointerException 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at resonet.android.androidgallery.helloAndroid$CheckForceCloseTask.doInBackground(helloAndroid.java:1565) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at resonet.android.androidgallery.helloAndroid$CheckForceCloseTask.doInBackground(helloAndroid.java:1) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at android.os.AsyncTask$2.call(AsyncTask.java:185) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:256) 03-29 21:23:37.726: ERROR/AndroidRuntime(820): ... 4 more
Thanks.
Here is my code:
public class helloAndroid extends Activity implements OnClickListener {
public static final int DIALOG_SEND_LOG = 345350;
protected static final int DIALOG_PROGRESS_COLLECTING_LOG = 3255;
protected static final int DIALOG_FAILED_TO_COLLECT_LOGS = 3535122;
private static final int DIALOG_REPORT_FORCE_CLOSE = 3535788;
private LogCollector mLogCollector;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
Bundle b = this.getIntent().getExtras(); s = b.getString("specialValue").trim(); String xmlURL = "";
CheckForceCloseTask task = new CheckForceCloseTask(); task.execute(); } private void throwException() { throw new NullPointerException(); }
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case DIALOG_SEND_LOG:
case DIALOG_REPORT_FORCE_CLOSE:
Builder builder = new AlertDialog.Builder(this);
String message;
if (id==DIALOG_SEND_LOG)
message = "Do you want to send me your logs?";
else
message = "It appears this app has been force-closed, do you want to report it to me?";
builder.setTitle("Warning")
.setIcon(android.R.drawable.ic_dialog_alert)
.setMessage(message)
.setPositiveButton("Yes", this)
.setNegativeButton("No", this);
dialog = builder.create();
break;
case DIALOG_PROGRESS_COLLECTING_LOG:
ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("Progress");
pd.setMessage("Collecting logs...");
pd.setIndeterminate(true);
dialog = pd;
break;
case DIALOG_FAILED_TO_COLLECT_LOGS:
builder = new AlertDialog.Builder(this);
builder.setTitle("Error")
.setMessage("Failed to collect logs.")
.setNegativeButton("OK", null);
dialog = builder.create();
}
return dialog;
}
class CheckForceCloseTask extends AsyncTask { @Override protected Boolean doInBackground(Void... params) { return mLogCollector.hasForceCloseHappened(); }
@Override protected void onPostExecute(Boolean result) { if (result) { showDialog(DIALOG_REPORT_FORCE_CLOSE); } else Toast.makeText(getApplicationContext(), "No force close detected.", Toast.LENGTH_LONG).show(); } }
public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: new AsyncTask() { @Override protected Boolean doInBackground(Void... params) { return mLogCollector.collect(); } @Override protected void onPreExecute() { showDialog(DIALOG_PROGRESS_COLLECTING_LOG); } @Override protected void onPostExecute(Boolean result) { dismissDialog(DIALOG_PROGRESS_COLLECTING_LOG); if (result) mLogCollector.sendLog("[email protected]", "Error Log", "Preface\nPreface line 2"); else showDialog(DIALOG_FAILED_TO_COLLECT_LOGS); }
}.execute(); } dialog.dismiss(); } }
© Stack Overflow or respective owner