Android Runtime.getRuntime().exec() to nav through directories
Asked Answered
C

3

6

So I want to be able to write an app that can turn on and display logcat messages, dmesg, and also be able to run commands like 'ls' 'cat' 'echo' 'cd.'

If I do the following:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }

I can put the text "full" to a Text View and see the root directory.

However, that's about all I can do. Let's say I want to find a directory, and change to it, I'm having trouble.

So if I do this:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }
        /* Code here to confirm the existing of a directory*/


        nativeProc = Runtime.getRuntime().exec("cd tmp\n");
        BufferedReader in2 = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        line = null;
        String test = "\nStart1:\n";
        while ((line = in2.readLine()) != null) {  
            test = test + "\n" + line;
        }

I get nothing for both "full" and "text"

Any ideas?

Connection answered 6/1, 2011 at 18:57 Comment(0)
N
4

You can execute ls with provided path for which folders should be listed

Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"});
Neslund answered 27/2, 2012 at 8:16 Comment(0)
I
2

The current working directory is associated with the current process. When you exec("cd tmp") you are creating a process, changing its directory to "tmp", and then the process exits. The parent process' working directory doesn't change.

See this for a more general discussion of changing the current working directory in Java.

Ishmaelite answered 7/1, 2011 at 22:53 Comment(0)
N
1

How about writing a shell file which checks for existence of the file and all other implementaion in this file and added it to sdcard and trigger the shell file from java using getRuntimr.exec().you can also pass parameters to it.

Nobe answered 27/2, 2012 at 7:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.