Development Android

//package com.jleorz.common;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
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.Date;
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 String localPath;
  private String url;
  private String appName;
  private Context activity;
  public static final String VERSION = "VERSION";
  public static final String LOCALPATH = "LOCALPATH";
  public static final String SENDERRORURL = "URL";
  public static final String ERROREEQUESR = "ERROREEQUESR";
  public static final String APP_NAME = "APP_NAME";
  public CustomExceptionHandler(Context activity) {
    this.localPath = LOCALPATH;
    this.url = SENDERRORURL;
    this.appName = APP_NAME;
    this.activity = activity;
    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();
    String filename = new Date().getTime() + ".stacktrace";
    if (localPath != null) {
      File file = new File(localPath);
      if (!file.exists())
        try {
          file.createNewFile();
        } catch (IOException e1) {
        }
      writeToFile(stacktrace, filename);
    }
    if (url != null) {
      sendToServer(stacktrace, filename);
    }
    defaultUEH.uncaughtException(t, e);
  }
  private void writeToFile(String stacktrace, String filename) {
    try {
      BufferedWriter bos = new BufferedWriter(new FileWriter(localPath
          + "/" + filename));
      bos.write(stacktrace);
      bos.flush();
      bos.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private void sendToServer(String stacktrace, String filename) {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);
    List nvps = new ArrayList();
    nvps.add(new BasicNameValuePair("filename", filename));
    nvps.add(new BasicNameValuePair("appName", appName));
    nvps.add(new BasicNameValuePair("stacktrace", stacktrace));
    nvps.add(new BasicNameValuePair("deviceInfo", android.os.Build.MODEL
        + "," + android.os.Build.VERSION.SDK + ","
        + android.os.Build.VERSION.RELEASE));
    nvps.add(new BasicNameValuePair("versionCode", "1"));
    try {
      httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
      httpClient.execute(httpPost);
    } catch (IOException e) {
      //
    }
  }
}