Запускать команды оболочки adb программно с той же привилегией

У меня есть проблема с запуском команд оболочки adb в моем приложении. при подключении моего устройства и использовании adb для включения точного местоположения с помощью этого кода. Он работает нормально и не запрашивает у пользователей разрешения.

settings put secure location_providers_allowed +gps
settings put secure location_providers_allowed +network

Но когда я использовал приведенный ниже код внутри своего приложения для запуска одних и тех же команд, он ведет себя по-разному. Он отображает диалоговое окно для запроса разрешения пользователя, которое я не хочу показывать.

val cmds = arrayOf("cd /system/bin", 
"settings put secure location_providers_allowed +gps",
"settings put secure location_providers_allowed +network")

ShellUtil.executecmd(cmds)

Декларация executecmd метод, как показано ниже

fun executecmd(cmds: Array<String>) {
    val p = Runtime.getRuntime().exec("su")
    val os = DataOutputStream(p.outputStream)
    for (tmpCmd in cmds) {
        os.writeBytes(tmpCmd + "\n")
    }
    os.writeBytes("exit\n")
    os.flush()
}

Кстати, устройство рутировано, и разрешение на запуск оболочки предоставляется с помощью SuperSU.

У меня вопрос: как заставить этот код работать точно так же, как и в оболочке adb, и не отображать диалоговое окно с разрешениями?

0 ответов

Другие вопросы по тегам