如何通过adb获取Android getExternalStorageDirectory文件夹?

时间:2016-08-25 11:09:27

标签: android adb

我想在应用程序运行时生成一个文件,因此我的计算机可以及时监控我的应用程序状态(手机始终通过USB连接)。

有没有让adb和app指向同一个目录?

另外,如果还有其他方法可以让android与计算机通信,请告诉我。

我试过的方法:

起初,我虽然

echo $EXTERNAL_STORAGE

Environment.getExternalStorageDirectory()

会返回相同的值。

值adb shell返回:

/storage/emulated/legacy

但是,在程序中调用Environment.getExternalStorageDirectory()的结果是:

/storage/emulated/0

然后,我制作android run shell命令

        Process su = Runtime.getRuntime().exec("echo $EXTERNAL_STORAGE");
        //also tried "echo \\$EXTERNAL_STORAGE"
        su.waitFor();
        in = su.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line = "";
        while ((line = reader.readLine())!= null){
            result = result + line + "\n";
        }
        reader.close();
        in.close();
        su.destroy();
        return result;

但它返回空字符串。

2 个答案:

答案 0 :(得分:1)

echo不是单独的可执行文件,而是shell的内置命令。

使用Runtime.getRuntime().exec("sh -c 'echo $EXTERNAL_STORAGE'");代替

答案 1 :(得分:1)

最后,我通过以下命令得到了值。

Runtime.getRuntime().exec(new String[] { "sh", "-c", "echo $EXTERNAL_STORAGE" }); 

感谢Alex P.鼓舞我。