gpt4 book ai didi

android - 我的应用程序中的 logcat 输出错误

转载 作者:行者123 更新时间:2023-11-30 03:38:29 26 4
gpt4 key购买 nike

我正在开发一个多选项卡应用程序。在其中一个选项卡中,我想显示 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 中打印我需要的内容。这是一个非常肮脏的解决方案,但目前是我唯一设法使用的解决方案。

我想指出,我在手机上遇到了不同的行为:

  • Galaxy S Plus(root):我可以看到日志。
  • Galaxy Y(root):无日志
  • Nexus One(非 root):无日志

编辑 (2) - 已解决(需要 ROOT 手机):

经过一番努力,我设法解决了我的问题。实际上浏览 init.rc 系统文件时,我看到/dev/log/main 和/dev/log/system 的权限设置为 620.. 这就是我无法在某些手机上打开日志的原因。所以我也 Root 了我的 Nexus One,并在调用 logcat 命令之前将此命令添加到我的 Activity 中:

Process process_su = Runtime.getRuntime().exec("su");
Process process_ch = Runtime.getRuntime().exec("chmod 777 /dev/log/main");

完成! :D

希望此信息对遇到我同样问题的任何人有所帮助。

最佳答案

您必须使用此权限:

<uses-permission android:name="android.permission.READ_LOGS" />

然后你可以使用我找到的那个 fragment

    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) {

}

我没试过,但好像是对的

关于android - 我的应用程序中的 logcat 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com