package com.happy.life; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.lang.Thread.UncaughtExceptionHandler; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import android.content.Context; public class CustomExceptionHandler implements UncaughtExceptionHandler { private UncaughtExceptionHandler defaultUEH; private static final String SERVER_URL = "http://chaowebs.appspot.com/crash/report"; private String mPackage; private String mVersion; public CustomExceptionHandler(Context context) { this.mPackage = context.getPackageName(); this.mVersion = VersionUtils.getVersionNumber(context); this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); } public void uncaughtException(Thread t, Throwable e) { final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); e.printStackTrace(printWriter); String stacktrace = result.toString(); printWriter.close(); sendToServer(stacktrace); defaultUEH.uncaughtException(t, e); } private void sendToServer(String stacktrace) { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(SERVER_URL); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("package", mPackage)); nvps.add(new BasicNameValuePair("version", mVersion)); nvps.add(new BasicNameValuePair("stacktrace", stacktrace)); try { httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); httpClient.execute(httpPost); } catch (IOException e) { e.printStackTrace(); } } }