Я пытаюсь запустить скрипт из моего приложения для Android, файл .sh находится в папке / res / raw, которая в конечном итоге копируется во внутреннее хранилище, а рутирование устройства не вариант.
НоЯ сталкиваюсь с этой ошибкой: Ошибка запуска exec ().Команда: [.....], где причиной является java.io.IOException: В доступе отказано;Я пытался запустить bash в течение 2 дней, но на данный момент я не вижу больше, надеюсь, кто-то с более свежим умом сможет увидеть, чего не хватает.
Я уже пытался запустить chmod 775
Сценарий (test.sh):
#!/bin/bash
REQUESTDATE=`date "+%Y-%m-%dT%H:%M:%S"`
URL=https://.....
Resp=`curl -v -H "date: $REQUESTDATE" -H "Content-Type: application/json" -X POST -d@my_json.json $URL`
echo $Resp
В моем приложении для Android:
private void runCommand(){
String pathToScript = getDir("my_scripts",Context.MODE_PRIVATE).getAbsolutePath() + File.separator + "test.sh";
String[] commands = {"bash", "-c", pathToScript};
try{
java.lang.Process process = new ProcessBuilder()
.command(commands)
.directory(new File (getDir("my_scripts",Context.MODE_PRIVATE).getAbsolutePath()))
.redirectErrorStream(true)
.start();
//Read output
StringBuilder output = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null){
output.append(line + "\n");
}
if (process.waitFor() == 0){
Log.i(TAG, "Success");
} else{
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}