Я рассмотрел все возможные ответы на эти вопросы, и никто из них не работал на меня. Похоже, что Android очень сильно заблокировал запуск команд оболочки из приложения, даже когда устройство укоренено.Не удается запустить exec («su») на корневом устройстве Android Marshmallow, другие команды работают нормально
я могу сделать су и запускать команды прекрасно от ADB, но я не могу запустить их из самого приложения. Она терпит неудачу с ошибкой:
Error running exec(). Command: [su] Working Directory: null Environment: null
Я искал эти ошибки и решения работают на старые версии Android, не зефир.
Я также пробовал libsuperuser (SuperSu), но он также терпит неудачу на Зефир.
Другие вещи, которые я пробовал, были, например. для перезагрузки устройства:
Process p = Runtime.getRuntime().exec("su");
Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
или
PowerManager pm = (PowerManager)...
То же самое с другими операциями. Команды сработали с ошибкой su. Я не могу отправить команду adb либо из приложения. Но я могу сделать оба отлично в противном случае из командной строки через оболочку adb.
Пример, который Android имеет на своем веб-сайте, также не работает.
Я прочитал об отключении безопасности SELinux и установил его в разрешающем режиме. Но для этого также необходимо запустить su, где приложение не работает.
Теперь я полностью потерян и не знаю, что делать дальше. Я действительно ищут рабочее решение, потому что для этого конкретного проекта требуется приложение для взаимодействия с основным оборудованием.
Привет, вам удалось найти решение для этого? У меня такая же проблема ... – NixSam
Нет, мы не могли. Мы отказались от этого. Не было абсолютно никакого способа запустить команду su из приложения. Вероятно, если приложение является частью скомпилированной сборки Android, оно будет работать, но само по себе является сложным и продолжительным процессом. – zeeshan