写入dumpstate到文件android
-
14-11-2019 - |
题
我需要在adb中使用bugreport选项,以转到我的应用程序中的SD上的文件。我找到了 android;使用exc(“bugreport”),介绍您无法在常规shell中运行bugreport,并且您需要单独运行dumpstate,dumpsys和logcat以获得相同的结果。这很好,我明白了,但我无法让DumpState或Dumpsys写入文件。下面的工作正常使用logcat -d -f编写logcat,但不适用于其他两个。我尝试了DumpState -f,dumpstate -d -f和dumpstate>以获取它的工作,但仍然没有将任何东西写入文件。有什么我缺少做这项工作吗?
这是我在sd上创建文件的地方
File folder = new File(Environment.getExternalStorageDirectory()+"/IssueReport/");
if (folder.isDirectory() == false) {
folder.mkdir();
}
log = new File(Environment.getExternalStorageDirectory()+"/IssueReport/log.txt");
.
在这里我将文件写入位置
private void submit() {
try {
log.createNewFile();
String cmd = "dumpstate "+log.getAbsolutePath();
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
. 解决方案
我工作了。我找到了运行shell命令虽然在android上的Java代码?,我看到没有一种方法来运行一个错误报告,只需三个组件:dumpstate,diveSys和日志。我分别生成每个报告,然后将它们全部组合成一个文件以附加到电子邮件。
private void submit() {
try {
String[] commands = {"dumpstate > /sdcard/IssueReport/dumpstate.txt",
"dumpsys > /sdcard/IssueReport/dumpsys.txt",
"logcat -d > /sdcard/IssueReport/log.txt",
"cat /sdcard/IssueReport/dumpstate.txt /sdcard/IssueReport/dumpsys.txt /sdcard/IssueReport/log.txt > /sdcard/IssueReport/bugreport.rtf" };
Process p = Runtime.getRuntime().exec("/system/bin/sh -");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : commands) {
os.writeBytes(tmpCmd+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
. 不隶属于 StackOverflow