Android vlc handle UncaughtException

public class VlcCrashHandler implements UncaughtExceptionHandler {



private static final String TAG = VlcCrashHandler.class.getSimpleName();


private UncaughtExceptionHandler defaultUEH;


public VlcCrashHandler() {
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}


@Override
public void uncaughtException(Thread thread, Throwable ex) {


final Writer result = new StringWriter();
final PrintWriter printWriter = new PrintWriter(result);
ex.printStackTrace(printWriter);
String stacktrace = result.toString();
printWriter.close();


Log.e(TAG, stacktrace);
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
defaultUEH.uncaughtException(thread, ex);
return; // We can't save the log if SD card is unavailable
}
String sdcardPath = Environment.getExternalStorageDirectory().getPath();
String directoryPathc = sdcardPath + "/"
+ Constants.EXTRA_INFO_CACHE_DIR;
writeLog(stacktrace, directoryPathc + "/vlc_crash");
writeLogcat(directoryPathc + "/vlc_logcat");


defaultUEH.uncaughtException(thread, ex);
}


private void writeLog(String log, String name) {
CharSequence timestamp = DateFormat.format("yyyyMMdd_kkmmss",
System.currentTimeMillis());
String filename = name + "_" + timestamp + ".log";


try {
FileOutputStream stream = new FileOutputStream(filename);
OutputStreamWriter output = new OutputStreamWriter(stream);
BufferedWriter bw = new BufferedWriter(output);


bw.write(log);
bw.newLine();


bw.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}


private void writeLogcat(String name) {
CharSequence timestamp = DateFormat.format("yyyyMMdd_kkmmss",
System.currentTimeMillis());
String filename = name + "_" + timestamp + ".log";
String[] args = { "logcat", "-v", "time", "-d" };


try {
Process process = Runtime.getRuntime().exec(args);
InputStreamReader input = new InputStreamReader(
process.getInputStream());
OutputStreamWriter output = new OutputStreamWriter(
new FileOutputStream(filename));
BufferedReader br = new BufferedReader(input);
BufferedWriter bw = new BufferedWriter(output);
String line;


while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}


bw.close();
output.close();
br.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值