zhangzengfei
2020-03-31 0ce893695d32ab686f9e2309509e80c6feb0d380
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.basic.security.base;
 
import android.content.Context;
 
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;
 
public class CrashHandler implements Thread.UncaughtExceptionHandler {
    static CrashHandler mCrashHandler = null;
 
    public static CrashHandler getCrashHandler() {
        if (mCrashHandler == null) {
            synchronized (CrashHandler.class) {
                if (mCrashHandler == null) {
                    mCrashHandler = new CrashHandler();
                }
            }
        }
        return mCrashHandler;
    }
 
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        handleException(e);
    }
 
    public void init(Context context) {
        Thread.setDefaultUncaughtExceptionHandler(mCrashHandler);
    }
 
    private void handleException(Throwable ex) {
        ex.printStackTrace();
        BaseApplication application = BaseApplication.getApplication();
        StringBuilder stringBuilder = new StringBuilder();
        for (Map.Entry<String, String> entry : application.devInfo.entrySet()) {
            stringBuilder.append(entry.getKey()).append("=").append(entry.getValue()).append("\n");
        }
        PrintWriter printWriter = new PrintWriter(new StringWriter());
        ex.printStackTrace(printWriter);
        Throwable cause = ex.getCause();
        while (cause != null) {
            cause.printStackTrace(printWriter);
            cause = ex.getCause();
        }
        printWriter.close();
        stringBuilder.append(printWriter.toString());
//        FileUtils.writeFile(Config.errorLog, stringBuilder.toString(), new CallBack() {
//            @Override
//            public void onSuccess(Object result) {
//
//            }
//
//            @Override
//            public void onFailure(String errMsg) {
//
//            }
//
//            @Override
//            public void onProcess(long cur, long total) {
//
//            }
//        });
    }
}