【问题标题】:Unable to open log device '/dev/log/main': Permission denied无法打开日志设备“/dev/log/main”:权限被拒绝
【发布时间】:2014-02-25 23:46:13
【问题描述】:

我已经看到了其他解决方案,但似乎没有一个适用。

我正在尝试从执行“logcat -d”的进程中读取数据,但我收到标题中的错误。

我的 AndroidManifest.xml 包括:

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

使用adb shell,我可以正常执行命令。

这是一个代码sn-p:

            ProcessBuilder procBuilder = new ProcessBuilder();
            procBuilder.redirectErrorStream(true);
            procBuilder.command("logcat", "-d");
            procBuilder.directory(new File("/"));
            Process process = procBuilder.start();
            //Process process = Runtime.getRuntime().exec("logcat -d");

            process.waitFor();

            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            StringBuilder log = new StringBuilder();
            String line = "";
            while ((line = bufferedReader.readLine()) != null) {
                log.append(line + "\n");
            }

执行时,我将第一行视为标题中的错误,仅此而已。

我在网上看到没有 su 就无法执行 logcat,但是有很多这样的代码文章......工作得很好。

关于我可能做错了什么或可以尝试的任何其他想法?

【问题讨论】:

  • 该权限在没有 root 的 JB+ 上不起作用。见stackoverflow.com/questions/11461650/…
  • 你的设备有root权限吗?
  • @Matthew 谢谢。您可以将其添加为答案吗?在这一点上似乎是正确的。
  • 哈我试过了,但它说这是一个微不足道的答案并自动将其变成评论:)

标签: java android logging logcat processbuilder


【解决方案1】:

它被归类为前 10 名不良权限并在 jellybean 中关闭,来自 google 的答案:

Dan Galpin:阅读系统日志。现在,我有坏消息要告诉你们。如果 您还没有看过我们的其他一些演示,请阅读系统日志 实际上从 J 开始就消失了。没有更多的读取系统日志,你 可以得到。但是,允许您在未经许可的情况下 阅读您自己的应用程序的系统日志。所以好消息并不可怕 通过打开他们的读取系统日志来监视用户正在做什么 允许。同时您仍然可以访问有用的日志 如果崩溃记录和所有 我们在 Google Play 上的东西还不够。

参考:http://youtu.be/WDDgoxvQsrQ?t=22m3s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多