В доступе запрещен запуск сценария оболочки из приложения Android - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь запустить скрипт из моего приложения для 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();
        }
}
...