I just want to execute my file from a specific folder. in my case /data/data/my-package/files/. So i tried :
Process process2=Runtime.getRuntime().exec(\"cd
It should be possible to call the executable with a specific working directory using Runtime.exec(String command, String[] envp, File dir)
as follows:
Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile",
null, new File("/data/data/my-package/files"));
maybe without the full path to myfile
Process process2=Runtime.getRuntime().exec("myfile",
null, new File("/data/data/my-package/files"));
Context#getFilesDir()
instead of hardcoding the path should work too and is safer / cleaner than specifying the path yourself since it is not guaranteed that /data/data/..
is always the correct path for all devices.
Process process2=Runtime.getRuntime().exec("myfile",
null, getFilesDir()));
The problem with cd somewhere
is that the directory is changed for a different Process so the second call to exec
in a new Process does not see the change.
A different solution will be,
Execute a .bat file from the Java Code
And do all the directory change, and stuff inside the bat file
For instance, my execute.bat file looks like this,
cd flutter_app
flutter build apk
cd ..
And the Java code looks like this,
Process process = Runtime.getRuntime().exec("execute.bat");
It works for me when I use the following overloaded method:
public Process exec(String command, String[] envp, File dir)
For example:
File dir = new File("C:/Users/username/Desktop/Sample");
String cmd = "java -jar BatchSample.jar";
Process process = Runtime.getRuntime().exec(cmd, null, dir);
The command just stores the command you want to run in command line. dir
just stores the path of your .jar file to be executed.