Как запустить процесс из приложения для Android с правами ROOT?
Я нашел похожие вопросы, но они у меня не работают: 1, 2
Журнал ошибок (IOException при использовании Runtime.getRuntime().exec(commandArray);
):
Caused by: java.io.IOException: Error running exec(). Command: [su -c, /data/data/%my_app_package%/%app% %params%] Working Directory: null Environment: null
08-22 11:02:17.515: WARN/System.err(19804): at java.lang.ProcessManager.exec(ProcessManager.java:211)
08-22 11:02:17.515: WARN/System.err(19804): at java.lang.Runtime.exec(Runtime.java:168)
08-22 11:02:17.515: WARN/System.err(19804): at java.lang.Runtime.exec(Runtime.java:123)
08-22 11:02:17.515: WARN/System.err(19804): ... 5 more
08-22 11:02:17.515: WARN/System.err(19804): Caused by: java.io.IOException: Permission denied
08-22 11:02:17.515: WARN/System.err(19804): at java.lang.ProcessManager.exec(Native Method)
08-22 11:02:17.515: WARN/System.err(19804): at java.lang.ProcessManager.exec(ProcessManager.java:209)
08-22 11:02:17.515: WARN/System.err(19804): ... 8 more
Аналогичный вывод ошибки при запуске с использованием ProcessBuilder
:
08-22 11:19:34.052: WARN/System.err(22054): Caused by: java.io.IOException: Error running exec(). Command: [su -c, /data/data/%app_package%/%app% %parameters%] Working Directory: null Environment: [ANDROID_SOCKET_zygote=9, ANDROID_BOOTLOGO=1, EXTERNAL_STORAGE=/storage/sdcard0, ANDROID_ASSETS=/system/app, PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin, ASEC_MOUNTPOINT=/mnt/asec, LOOP_MOUNTPOINT=/mnt/obb, BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework_ext.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar, ANDROID_DATA=/data, LD_LIBRARY_PATH=/vendor/lib:/system/lib, ANDROID_ROOT=/system, ANDROID_PROPERTY_WORKSPACE=8,65536]
08-22 11:19:34.052: WARN/System.err(22054): at java.lang.ProcessManager.exec(ProcessManager.java:211)
08-22 11:19:34.052: WARN/System.err(22054): at java.lang.ProcessBuilder.start(ProcessBuilder.java:195)
08-22 11:19:34.052: WARN/System.err(22054): ... 5 more
08-22 11:19:34.052: WARN/System.err(22054): Caused by: java.io.IOException: Permission denied
Я абсолютно уверен, что устройство рутировано и работает нормально. Иногда меня просят предоставить root-права приложениям. В этом случае меня не спрашивают, просто получаю ошибку.
Как запросить разрешение root для приложения во время выполнения? Предоставляет ли он права root для всех запущенных процессов?