代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
崩溃相关
作者:
羽昶
/ 发布于
2017/2/21
/
877
package com.blankj.utilcode.utils; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Environment; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.lang.Thread.UncaughtExceptionHandler; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2016/9/27 * desc : 崩溃相关工具类 * </pre> */ public class CrashUtils implements Thread.UncaughtExceptionHandler { private volatile static CrashUtils mInstance; private UncaughtExceptionHandler mHandler; private boolean mInitialized; private String crashDir; private String versionName; private int versionCode; private CrashUtils() { } /** * 获取单例 * 在Application中初始化{@code CrashUtils.getInstance().init(this);} * 需添加权限 {@code <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>} * * @return 单例 */ public static CrashUtils getInstance() { if (mInstance == null) { synchronized (CrashUtils.class) { if (mInstance == null) { mInstance = new CrashUtils(); } } } return mInstance; } /** * 初始化 * * @return {@code true}: 成功{@code false}: 失败 */ public boolean init() { if (mInitialized) return true; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { File baseCache = Utils.getContext().getExternalCacheDir(); if (baseCache == null) return false; crashDir = baseCache.getPath() + File.separator + "crash" + File.separator; } else { File baseCache = Utils.getContext().getCacheDir(); if (baseCache == null) return false; crashDir = baseCache.getPath() + File.separator + "crash" + File.separator; } try { PackageInfo pi = Utils.getContext().getPackageManager().getPackageInfo(Utils.getContext().getPackageName(), 0); versionName = pi.versionName; versionCode = pi.versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; } mHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(this); return mInitialized = true; } @Override public void uncaughtException(Thread thread, final Throwable throwable) { String now = new SimpleDateFormat("yy-MM-dd HH:mm:ss", Locale.getDefault()).format(new Date()); final String fullPath = crashDir + now + ".txt"; if (!FileUtils.createOrExistsFile(fullPath)) return; new Thread(new Runnable() { @Override public void run() { PrintWriter pw = null; try { pw = new PrintWriter(new FileWriter(fullPath, false)); pw.write(getCrashHead()); throwable.printStackTrace(pw); Throwable cause = throwable.getCause(); while (cause != null) { cause.printStackTrace(pw); cause = cause.getCause(); } } catch (IOException e) { e.printStackTrace(); } finally { CloseUtils.closeIO(pw); } } }).start(); if (mHandler != null) { mHandler.uncaughtException(thread, throwable); } } /** * 获取崩溃头 * * @return 崩溃头 */ private String getCrashHead() { return "\n************* Crash Log Head ****************" + "\nDevice Manufacturer: " + Build.MANUFACTURER +// 设备厂商 "\nDevice Model : " + Build.MODEL +// 设备型号 "\nAndroid Version : " + Build.VERSION.RELEASE +// 系统版本 "\nAndroid SDK : " + Build.VERSION.SDK_INT +// SDK版本 "\nApp VersionName : " + versionName + "\nApp VersionCode : " + versionCode + "\n************* Crash Log Head ****************\n\n"; } }
试试其它关键字
崩溃相关
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
羽昶
贡献的其它代码
(
15
)
.
获取每个月的开始和结束时间
.
崩溃相关
.
servlet跳转jsp页面
.
利用POI抽取PPT中的图片并保存在文件中
.
DataTable数据导入Excel数据
.
ie6实现div在select控件之上
.
使用jQuery来切换样式表
.
快速获取文件MD5值
.
复制文件并计算传输速度
.
腾讯地图与百度地图坐标转换
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3