Te damos la bienvenida a proyecto on line, ahora vas a encontrar la solucíon que buscabas.
Solución:
Debería ser posible llamar al ejecutable con un directorio de trabajo específico usando Runtime.exec(String command, String[] envp, File dir)
como sigue:
Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile",
null, new File("/data/data/my-package/files"));
tal vez sin la ruta completa a myfile
Process process2=Runtime.getRuntime().exec("myfile",
null, new File("/data/data/my-package/files"));
Context#getFilesDir()
en lugar de codificar, la ruta también debería funcionar y es más segura / más limpia que especificar la ruta usted mismo, ya que no se garantiza que /data/data/..
es siempre la ruta correcta para todos los dispositivos.
Process process2=Runtime.getRuntime().exec("myfile",
null, getFilesDir()));
el problema con cd somewhere
es que el directorio se cambia por un proceso diferente, por lo que la segunda llamada a exec
en un nuevo Proceso no ve el cambio.
Funciona para mí cuando uso el siguiente método sobrecargado:
public Process exec (comando de cadena, cadena[] envp, directorio de archivo)
Por ejemplo:
File dir = new File("C:/Users/username/Desktop/Sample");
String cmd = "java -jar BatchSample.jar";
Process process = Runtime.getRuntime().exec(cmd, null, dir);
El comando simplemente almacena el comando que desea ejecutar en la línea de comandos. dir
simplemente almacena la ruta de su archivo .jar para ser ejecutado.
Si te sientes a gusto, puedes dejar una división acerca de qué te ha impresionado de este ensayo.