Выполнение команды "su" программно генерирует исключение "Отказано в доступе" - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь программно выполнить приведенную ниже команду на устройстве Android -9:

private void turnOnGpsCMD(){
        String[] cmds = {"cd /system/bin" ,"settings put secure location_providers_allowed +gps"};
        try {
            Process p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            for (String tmpCmd : cmds) {
                os.writeBytes(tmpCmd + "\n");
            }
            os.writeBytes("exit\n");
            os.flush();
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

Но происходит сбой со следующим исключением:

java.io.IOException: Cannot run program "su": error=13, Permission denied

Я использую рутированное устройство и могу выполнить указанные выше команды из командной строки adb shell. Я прошел через несколько ответов stackoverflow (например, link1 , link2 , link3 , link4 , link5 ) но никто не работал для меня. Пожалуйста помоги! Заранее спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Вам необходим root доступ для запуска команды su в ADB.

Перед запуском команды su в ADB, пожалуйста, проверьте, что устройство рутировано. только тогда это сработает.

...