Java 无法将logcat输出写入我的应用程序中的文件
我正在开发一个Android应用程序,我试图将logcat的内容输出到SD卡上的一个文件中 我知道这样一个事实: 来自JellyBean的3P应用程序无法访问系统日志。但是,我相信在我的应用程序中使用logcat,至少会输出日志消息 通过我的应用程序发布。 在我的清单文件中使用写入外部存储权限Java 无法将logcat输出写入我的应用程序中的文件,java,android,android-logcat,Java,Android,Android Logcat,我正在开发一个Android应用程序,我试图将logcat的内容输出到SD卡上的一个文件中 我知道这样一个事实: 来自JellyBean的3P应用程序无法访问系统日志。但是,我相信在我的应用程序中使用logcat,至少会输出日志消息 通过我的应用程序发布。 在我的清单文件中使用写入外部存储权限 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi
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的设备上测试我的应用程序
我在这里做错了什么?当您运行logcat命令时,它不会停止,除非您要求它停止Ctrl+C,否则它会继续运行。您需要使用logcat dump,以便它转储logcat并停止
logcat -d
这将转储logcat的当前内容,并在完成后完成
编辑:
从Jellybean开始,在没有root权限的情况下,这将不再适用于设备。您可以尝试以下代码:
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) {
}
这对我有用。希望能有帮助
是的,我也试过了。使用logcat-d-f/sdcard/mylog似乎也没有什么帮助。哦,从设备方面看,它似乎不再起作用了。您需要root权限才能立即使用logcat命令。您是否在清单文件中设置了android.permission.READ_LOGS权限?Hiemanshu,您能否引用找到该信息的来源?Busyley,是的,我有。@Hiemanshu,若它需要root权限来读取手机上的日志文件,adb是怎么做到的?我认为这是不对的,如果有帮助的话。您可以在该链接的底部阅读文本。您可以尝试在手机或平板电脑的生命周期中路由输出。但我不确定这需要什么权限。