无法打开日志设备'/ dev / log / main':权限被拒绝

时间:2014-02-25 23:46:14

标签: java android logging logcat processbuilder

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

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

我的AndroidManifest.xml包括:

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

使用adb shell,我可以很好地执行命令。

这是一段代码:

            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但是有很多代码就像这样......工作得很好。

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

1 个答案:

答案 0 :(得分:2)

它被列为十大不良权限,并在软糖中被关闭,谷歌的回答:

  

Dan Galpin:阅读系统日志。现在,我给你们带来了坏消息。如果   你还没有看过我们的其他一些演示文稿,请阅读系统日志   实际上已经消失了.J。你没有更多的系统日志   可以得到。但是,未经许可,您可以使用   阅读您自己的应用程序的系统日志。所以这个好消息并不令人毛骨悚然   通过打开他们的读取系统日志来监视用户正在做的事情   允许。同时你仍然可以获得有用的日志   你需要帮助你的调试,如果崩溃记录和所有   我们在Google Play上播放的内容还不够。

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