zhangzengfei
2020-06-18 8f14b89ef2a4e756b776db9ae4291ddd31f9781d
app/src/main/java/com/basic/security/utils/CrashHandler.java
@@ -1,4 +1,5 @@
package com.basic.security.utils;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
@@ -8,16 +9,15 @@
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.os.Looper;
import android.os.SystemClock;
import android.util.Log;
import android.widget.Toast;
import com.basic.security.activity.MainActivity_;
import com.basic.security.base.BaseApplication;
import org.springframework.util.FileCopyUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
@@ -38,17 +38,14 @@
public class CrashHandler implements Thread.UncaughtExceptionHandler {
    public static String TAG = "MyCrash";
    private static com.basic.security.utils.CrashHandler instance = new com.basic.security.utils.CrashHandler();
    // 用于格式化日期,作为日志文件名的一部分
    private static DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    // 系统默认的UncaughtException处理类
    private Thread.UncaughtExceptionHandler mDefaultHandler;
    private static com.basic.security.utils.CrashHandler instance = new com.basic.security.utils.CrashHandler();
    private Context mContext;
    // 用来存储设备信息和异常信息
    private Map<String, String> infos = new HashMap<String, String>();
    // 用于格式化日期,作为日志文件名的一部分
    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    /**
     * 保证只有一个CrashHandler实例
@@ -61,6 +58,37 @@
     */
    public static com.basic.security.utils.CrashHandler getInstance() {
        return instance;
    }
    public static String getErrorContent() {
        String time = formatter.format(new Date());
        String fileName = "crash-" + time + ".log";
        String content = "";
        try {
            String path = getGlobalpath();
            File dir = new File(path);
            if (!dir.exists())
                dir.mkdirs();
            File file = new File(path + fileName);
            if (file.exists()) {
                content = FileCopyUtils.copyToString(new FileReader(file));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return content;
    }
    public static String getGlobalpath() {
//        return BaseApplication.getApplication().getFilesDir().getAbsolutePath();
//        return Environment.getExternalStorageDirectory().getAbsolutePath()
//                + File.separator + "crash" + File.separator;
        return Environment.getExternalStorageDirectory().getAbsolutePath()
                + File.separator + "crash" + File.separator;
    }
    public static void setTag(String tag) {
        TAG = tag;
    }
    /**
@@ -99,17 +127,20 @@
            e.printStackTrace();
        }
        try {
            new Thread() {
            if (Constants.autoRestart) {
                new Thread() {
                @Override
                public void run() {
                    Intent intent = new Intent(mContext, MainActivity_.class);
                    PendingIntent restartIntent = PendingIntent.getActivity(mContext, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                    AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
                    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent);
                    android.os.Process.killProcess(android.os.Process.myPid());
                }
            }.start();
                    @Override
                    public void run() {
                        Intent intent = new Intent(mContext, MainActivity_.class);
                        PendingIntent restartIntent = PendingIntent.getActivity(mContext, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                        AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
                        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent);
                        android.os.Process.killProcess(android.os.Process.myPid());
                    }
                }.start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -206,16 +237,6 @@
            fos.close();
        }
        return fileName;
    }
    public static String getGlobalpath() {
        return BaseApplication.getApplication().getFilesDir().getAbsolutePath();
//        return Environment.getExternalStorageDirectory().getAbsolutePath()
//                + File.separator + "crash" + File.separator;
    }
    public static void setTag(String tag) {
        TAG = tag;
    }
    /**