android 保存崩溃信息,Android保存每次运行崩溃报告的日志
您可以通过以下链接找到帮助
Writing crash reports into device sd card
您不需要添加外部库.
import com.wordpress.doandroid.Training.R;
import android.app.Activity;
import android.os.Bundle;
public class CaptureExceptionActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Sets the default uncaught exception handler. This handler is invoked
// in case any Thread dies due to an unhandled exception.
Thread.setDefaultUncaughtExceptionHandler(new CustomizedExceptionHandler(
"/mnt/sdcard/"));
String nullString = null;
System.out.println(nullString.toString());
setContentView(R.layout.main);
}
}
和Handler实现
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Environment;
import android.util.Log;
public class CustomizedExceptionHandler implements UncaughtExceptionHandler {
private UncaughtExceptionHandler defaultUEH;
private String localPath;
public CustomizedExceptionHandler(String localPath) {
this.localPath = localPath;
//Getting the the default exception handler
//that's executed when uncaught exception terminates a thread
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
public void uncaughtException(Thread t,Throwable e) {
//Write a printable representation of this Throwable
//The StringWriter gives the lock used to synchronize access to this writer.
final Writer stringBuffSync = new StringWriter();
final PrintWriter printWriter = new PrintWriter(stringBuffSync);
e.printStackTrace(printWriter);
String stacktrace = stringBuffSync.toString();
printWriter.close();
if (localPath != null) {
writeToFile(stacktrace);
}
//Used only to prevent from any code getting executed.
// Not needed in this example
defaultUEH.uncaughtException(t,e);
}
private void writeToFile(String currentStacktrace) {
try {
//Gets the Android external storage directory & Create new folder Crash_Reports
File dir = new File(Environment.getExternalStorageDirectory(),"Crash_Reports");
if (!dir.exists()) {
dir.mkdirs();
}
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
Date date = new Date();
String filename = dateFormat.format(date) + ".STACKTRACE";
// Write the file into the folder
File reportFile = new File(dir,filename);
FileWriter fileWriter = new FileWriter(reportFile);
fileWriter.append(currentStacktrace);
fileWriter.flush();
fileWriter.close();
} catch (Exception e) {
Log.e("ExceptionHandler",e.getMessage());
}
}
}
不要忘记在清单WRITE_EXTERNAL_STORAGE中添加此权限
android 保存崩溃信息,Android保存每次运行崩溃报告的日志相关推荐
- android简易学生信息,Android studio应用程序设计——简单的学生信息录入应用app
界面设计:界面样式如图所示 界面设计的主要代码: Java实现部分代码 package com.example.myapplication2_1; import android.content.Con ...
- java保存登录信息_java – 保存登录详细信息(首选项)android
我有一个具有登录,注销功能的Android应用程序.登录表单包含用户名和密码以及登录按钮.我想在用户选中"记住我"复选框时保存用户名和密码. 我的project.java文件如下所 ...
- android保存编辑信息,android文件存储之preference,解决程序界面改动信息保存
非完整的项目代码,仅有preference的存储数据和读取的部分内容. 数据存储: String str = ""; //存储所有字符串信息 String temp = " ...
- android编程设备信息,Android获取当前手机设备信息工具类详解
工作中用到的图片处理工具类,简单写下来,以便备用! public class BitmapUtils { /** * 图像背景圆角处理 * bitmap要处理的图片 roundPx 图片弯角的圆度一般 ...
- android apk 的信息,Android中获取apk基本信息
一 PackageManager可以获得的所有包节点信息: 1,所有节点的基类:PackageItemInfo: 2,PackageInfo:package的全面信息,与AndroidManifest ...
- android查看cpu信息,Android使用adb命令查看CPU信息
Android中使用JNI编程的时候会需要编译出不同的SO文件,以供适配不同的机型. 例如: 由此需要查看不同机型的CPU信息. 使用ADB命令查看CPU信息命令如下: 1. adb shell 2. ...
- 【Android应用开发】 Android 崩溃日志 本地存储 与 远程保存
示例代码下载 : http://download.csdn.net/detail/han1202012/8638801; 一. 崩溃日志本地存储 1. 保存原理解析 崩溃信息本地保存步骤 : -- 1 ...
- android查找邮件程序,Android 程序崩溃日志邮件获取
版权声明:本文为博主原创文章,未经博主允许不得转载. 在我们开发Android应用程序的时候,BUG的出现是难以避免的,时不时还会出现崩溃的情况,这个时候,我们急需知道造成问题的原因是什么,但是,在没 ...
- android文件存储数组,Android面试简录——文件存储
* SharedPreferences 请描述Android SDK支持哪些文件存储技术? 1.SharedPreferences保存key-value类型的数据 2.流文件存储(openFileOu ...
最新文章
- 李航等提出多粒度AMBERT模型,CLUE、GLUE上优于BERT,中文提升显著
- Java实现最小堆一
- 九度 题目1548:平面上的点
- ubuntu安装mysql_Ubuntu18.04下安装MySQL
- 新发现的两个Delphi要点。
- apache开源项目--thrift
- 正则表达式 转义字符
- LeedCode知识点之位运算
- 天翼云高可用虚拟IP(HAVIP)实践
- IDEA 导入p3c-formatter 格式化代码
- 服务器装系统报0x0000005d,虚拟机无法安装win10系统提示错误代码0x0000005D怎么办...
- 看了本文让你laravel安装laravel-queue-rabbitmq一路顺风
- 服务器cpu都有哪些型号,盘点目前性价比最高的CPU有哪些型号
- 2019 NeurIPS | Graph Transformer Networks
- 什么是5G LAN 5G LAN商用爆发推动5G创新应用 提速数字转型新引擎
- 推荐几个在线处理文件、图片、音视频的工具,免费又好用!
- 阿里云最新可申请试用云产品汇总(免费领阿里云服务器)
- steam同乐无法连接远程计算机,Steam远程同乐功能怎么使用_Steam远程同乐功能使用方法_3DM单机...
- 到北京软通动力做项目经理怎么样?
- 概论_第2章_一维均匀分布的概率公式
热门文章
- Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法
- mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法
- 解决任务计划程序未启动任务,因为相同任务的实例正在运行的问题
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
- java.lang.classnotfoundexception解决方法
- c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案
- 程序运行过程中遇到“ORA-03114: not connected to ORACLE”的问题解决
- 循环前增加和后增加之间的区别?
- 用PHP漂亮打印JSON
- 访问“ for”循环中的索引?