为什么进程在测试运行器类中给出空输入流?

发布于 2024-12-09 00:53:54 字数 1409 浏览 0 评论 0原文

在我的 android 测试项目中,我只是使用 adb 命令 读取 logcat

public StringBuilder log=new StringBuilder();
    public String line="";
    public String temp="";

public void testSolo() throws Exception {

             String baseCommand = "logcat -v time";
            baseCommand += " ActivityManager:I "; // Info for my app
            baseCommand += " *:S "; // Silence others

            try {
                  Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);
                  BufferedReader bufferedReader = new BufferedReader(
                   new InputStreamReader(logReaderProcess.getInputStream()));

                   while ((line =bufferedReader.readLine()) != null) {
                            log.append(line); // here readLine() returns null
                          }

            }
            catch (IOException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                    }

 }

但是,在 string line 中我总是得到 null value

而同样的事情总是在 android activity 的 onCreate() 中运行。 我不明白为什么会出现这种情况?

同样的事情在活动类中运行,而不是在 android 测试项目中运行。

我还在测试项目中添加了 READ_LOGSWRITE_EXTERNAL_STORAGE 的 use -permission manifest.xml 文件。

有人知道它是如何工作的或者会发生什么吗?

提前致谢。

In my android test project, I simply read the logcat using adb command

like,

public StringBuilder log=new StringBuilder();
    public String line="";
    public String temp="";

public void testSolo() throws Exception {

             String baseCommand = "logcat -v time";
            baseCommand += " ActivityManager:I "; // Info for my app
            baseCommand += " *:S "; // Silence others

            try {
                  Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);
                  BufferedReader bufferedReader = new BufferedReader(
                   new InputStreamReader(logReaderProcess.getInputStream()));

                   while ((line =bufferedReader.readLine()) != null) {
                            log.append(line); // here readLine() returns null
                          }

            }
            catch (IOException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                    }

 }

but, here in string line I always get null value,

while the same thing always run in the android activity's onCreate() .
I don't understand why this happen?

Same thing runs in activity class and not in the android test project.

I also add use -permission for READ_LOGS and WRITE_EXTERNAL_STORAGE in test project's
manifest.xml file.

Is there anybody knows how it works or what happens?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若相惜即相离 2024-12-16 00:53:54

尝试添加

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

到您的清单中。

Try to add

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

to your manifest.

自由范儿 2024-12-16 00:53:54
String []baseCommand = new String[]{"logcat", "-v","time"}; 
Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);

试试这个

String []baseCommand = new String[]{"logcat", "-v","time"}; 
Process logReaderProcess = Runtime.getRuntime().exec(baseCommand);

try this out

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文