app/src/main/java/safeluck/drive/evaluation/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/app.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/src/main/java/com/anyun/exam/lib/MyLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/src/main/java/com/anyun/exam/lib/crash/CrashHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -16,7 +16,7 @@ import me.yokeyword.fragmentation.SupportActivity; import safeluck.drive.evaluation.fragment.HomeFragment; import safeluck.drive.evaluation.util.MyLog; import com.anyun.exam.lib.MyLog; import safeluck.drive.evaluation.util.PermissionManager; import safeluck.drive.evaluation.viewmodels.MainViewModel; app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,8 +1,6 @@ package safeluck.drive.evaluation; import android.app.ActivityManager; import android.app.Application; import android.content.Context; import android.support.annotation.NonNull; import android.util.Log; @@ -12,7 +10,9 @@ import me.yokeyword.fragmentation.Fragmentation; import me.yokeyword.fragmentation.helper.ExceptionHandler; import safeluck.drive.evaluation.util.MyLog; import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.crash.CrashHandler; import safeluck.drive.evaluation.util.SystemUtil; /** @@ -41,6 +41,8 @@ }) .install(); CrashHandler crashHandler =CrashHandler.getInstance(); crashHandler.init(getApplicationContext()); AYSdk.getInstance().init(getApplicationContext()); AYSdk.getInstance().registListener(this); Log.i(TAG, "onCreate: "); app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -5,6 +5,8 @@ import android.graphics.Paint; import android.graphics.Path; import android.graphics.PathDashPathEffect; import android.graphics.Rect; import android.graphics.RectF; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -67,6 +69,7 @@ canvas = holder.lockCanvas(); paint.setColor(Color.RED); path.addCircle(mSurfaceView.getWidth()/2,mSurfaceView.getHeight()/2,70, Path.Direction.CW); path.addOval(new RectF(new Rect(100,100,200,200)), Path.Direction.CW); canvas.drawPath(path,paint); } catch (Exception e) { app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
@@ -58,7 +58,7 @@ import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.customview.AutoFitTextureView; import safeluck.drive.evaluation.util.MyLog; import com.anyun.exam.lib.MyLog; /** * MyApplication2 app/src/main/java/safeluck/drive/evaluation/viewmodels/MainViewModel.java
@@ -8,7 +8,7 @@ import java.util.concurrent.atomic.AtomicInteger; import safeluck.drive.evaluation.util.MyLog; import com.anyun.exam.lib.MyLog; public class MainViewModel extends ViewModel { private static final String TAG = "MainViewModel"; lib/src/main/java/com/anyun/exam/lib/MyLog.java
File was renamed from app/src/main/java/safeluck/drive/evaluation/util/MyLog.java @@ -1,4 +1,4 @@ package safeluck.drive.evaluation.util; package com.anyun.exam.lib; /** * anyunProject(20190906) lib/src/main/java/com/anyun/exam/lib/crash/CrashHandler.java
New file @@ -0,0 +1,128 @@ package com.anyun.exam.lib.crash; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import com.anyun.exam.lib.MyLog; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; /** * MyApplication2 * Created by lzw on 2019/9/27. 10:22:20 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class CrashHandler implements Thread.UncaughtExceptionHandler { private static CrashHandler mInstance = new CrashHandler(); private Thread.UncaughtExceptionHandler mDefaultCrashHandler; private Context mContext; private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private HashMap<String, String> infos = new HashMap<>(); /** * 私有构造函数 **/ private CrashHandler() { } public static CrashHandler getInstance() { return mInstance; } public void init(Context context) { this.mContext = context; mDefaultCrashHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(this); } @Override public void uncaughtException(Thread t, Throwable e) { if (!handleException(e) && mDefaultCrashHandler != null) { //如果用户没有处理异常则让系统默认的异常处理器去处理异常 mDefaultCrashHandler.uncaughtException(t, e); } else { try { Thread.sleep(3000); } catch (InterruptedException ex) { ex.printStackTrace(); } //退出程序 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } } private boolean handleException(Throwable ex) { if (ex == null) { return false; } //收集设备信息 collectDeviceInfo(); saveCrashInfo2File(ex); return true; } private void saveCrashInfo2File(Throwable ex) { StringBuffer stringBuffer = new StringBuffer(); for (Map.Entry<String, String> entry : infos.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); stringBuffer.append(key + "=" + value + "\n"); } Writer writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); ex.printStackTrace(printWriter); Throwable cause = ex.getCause(); while (cause != null) { cause.printStackTrace(printWriter); cause = cause.getCause(); } printWriter.close(); String result = writer.toString(); stringBuffer.append(result); MyLog.i("crash", stringBuffer.toString()); } private void collectDeviceInfo() { if (mContext != null) { PackageManager packageManager = mContext.getPackageManager(); try { PackageInfo packageInfo = packageManager.getPackageInfo(mContext.getPackageName(), PackageManager.GET_ACTIVITIES); if (packageInfo != null) { String versionCode = Long.toString(packageInfo.versionCode); String versionName = packageInfo.versionName; infos.put("versionName", versionName); infos.put("versionCode", versionCode); } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Field[] fields = Build.class.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); try { infos.put(field.getName(), field.get(null).toString()); } catch (IllegalAccessException e) { e.printStackTrace(); } } } } }