我正在开发Android应用程序,我试图将logcat的内容输出到SD卡上的文件中。
我知道
这个事实在我的清单文件中使用WRITE_EXTERNAL_STORAGE权限。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
//Code 1 - Seems like an app hang. Nothing shown.
Process process = Runtime.getRuntime().exec("logcat -f /sdcard/mylog");
//Code 2 - This works however if I run this alone, without the above.
FileWriter writer = new FileWriter("/sdcard/mylog");
writer.append("test");
writer.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我在运行kitkat的设备上测试我的应用。
我在这里做错了什么?
答案 0 :(得分:0)
当您运行命令logcat时,它不会停止,它会一直运行,除非您要求它停止(Ctrl + C)。您需要使用logcat转储,以便它转储logcat并停止。
logcat -d
这将转储logcat的当前内容并在完成后完成。
编辑:
从Jellybean开始,这不再适用于没有root权限的设计。
答案 1 :(得分:0)
您可以尝试以下代码:
try {
Process process = Runtime.getRuntime().exec("logcat -f");
Log.d("TAG", "my test phrase");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line;
FileWriter fw = new FileWriter("/sdcard/mylog");
while ((line = bufferedReader.readLine()) != null) {
fw.append(line);
}
fw.close();
} catch (IOException e) {
}
这对我有用。希望它有所帮助。