收集客户端的错误信息

public class CrashApplication extends Application {

	@Override
	public void onCreate() {
		super.onCreate();
		
		MyUncaughtExceptionHandler handler = MyUncaughtExceptionHandler.getInstance();
		handler.init(getApplicationContext());
		Thread.currentThread().setUncaughtExceptionHandler(handler);
	}	
}
public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {

	private static MyUncaughtExceptionHandler handler;
	private Context context;

	private MyUncaughtExceptionHandler() {

	}

	public static synchronized MyUncaughtExceptionHandler getInstance() {
		if (handler == null) {
			handler = new MyUncaughtExceptionHandler();
			return handler;
		} else {
			return handler;
		}
	}

	public void init(Context context) {
		this.context = context;
	}

	@Override
	public void uncaughtException(Thread thread, Throwable ex) {
		try {
			System.out.println("发生错误!");
			StringBuilder sb = new StringBuilder();

			//获取版本号
			PackageManager packageManager = context.getPackageManager();
			PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
			String versionName = packageInfo.versionName;
			sb.append("程序的版本号:" + versionName).append("\n");
			
			//获取设备信息
			Field[] fields = Build.class.getDeclaredFields();
			for(int i=0;i<fields.length;i++){
				fields[i].setAccessible(true);
				String name = fields[i].getName();
				String value = fields[i].get(null).toString();
				sb.append(name+" = "+value).append("\n");
			}
			
			//获取错误信息
			StringWriter wr = new StringWriter();
			PrintWriter err = new PrintWriter(wr);
			ex.printStackTrace(err);
			String msg = wr.toString();
			
			sb.append(msg);
			
			System.out.println(sb.toString());
			//上传服务器(未实现)
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		//进程自杀
		android.os.Process.killProcess(android.os.Process.myPid());
	}
}



安卓开发论坛   http://www.eoeandroid.com/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值