Запускать команды оболочки 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, и не отображать диалоговое окно с разрешениями?