我正在开发一个多标签应用程序。在其中一个选项卡中,我想显示logcat,但是我在运行它时遇到了很多问题。
现在我正在使用以下命令,但我的TextView中没有任何内容。 :
Process process = Runtime.getRuntime().exec("/system/bin/logcat -s com.vittorio:I");
但是当我向终端运行相同的命令时,它可以完美无缺。
我也尝试过这个其他命令:
Process process = Runtime.getRuntime().exec("/system/bin/logcat *:I");
但由于某种原因,它还打印调试级别消息......
编辑(1):
我通过在整个日志中添加一个高级过滤器(java)来解决问题..所以我只在我的textview中打印我需要的东西。这是一个非常肮脏的解决方案,但现在是我唯一能够提供的解决方案。
我想指出,我在手机上遇到了不同的行为:
编辑(2) - 已解决(需要根据电话):
经过一番挣扎,我设法解决了我的问题。实际上在init.rc系统文件中导航我看到/ dev / log / main和/ dev / log / system的权限设置为620 ..这就是为什么我无法在我的某些手机上打开日志的原因。因此,在调用logcat命令之前,我还根据我的Nexus One并将此命令添加到我的活动中:
Process process_su = Runtime.getRuntime().exec("su");
Process process_ch = Runtime.getRuntime().exec("chmod 777 /dev/log/main");
完成! :d
希望这些信息可以帮助那些将面临同样问题的人。
答案 0 :(得分:1)
您必须使用此权限:
<uses-permission android:name="android.permission.READ_LOGS" />
然后你可以使用我找到的那个片段
try {
Process process = Runtime.getRuntime().exec("logcat -v");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder logString=new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
logString.append(line);
}
TextView tv = (TextView)findViewById(R.id.logTextView);
tv.setText(logString.toString());
} catch (IOException e) {
}
我没试过,但似乎是正确的