android - 如何从具有ROOT权限的Android应用程序启动进程

标签 android process permissions root

如何从具有ROOT权限的Android应用程序启动进程?

我发现了类似的问题,但它们对我不起作用:1 , 2

错误日志(使用Runtime.getRuntime().exec(commandArray);IOException):

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 权限?

最佳答案

如何为 ProcessBuilder 构建进程的命令行存在差异:

工作代码:

  • commandLine.add("su -c"); commandLine.add(“应用程序”); commandLine.add("params")
  • commandLine.add("sudo"); commandLine.add(“应用程序”); commandLine.add("params")

工作代码:

  • commandDownloader.add("su"); commandDownloader.add("-c"); commandLine.add("app");

对于工作代码,我需要获得 Android 操作系统的许可(在我的例子中,MIUI 更详细)

关于android - 如何从具有ROOT权限的Android应用程序启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18372074/

相关文章:

android - 如何更改 android 微调器中的文本大小?

c - shell后台进程

python - 使用 Python 访问已经运行的进程

Facebook user_groups 权限不适用于网络应用程序?

php - 洋红色。目标文件夹不可写或不存在

git - 让用户只推送到他自己的分支

android - Afree图表: How to increase X axis values(gap or domain range) while zooming

java - 如何将 OnLongClickListener 设置为 ListView 中的按钮?

android - 如何制作带有特定声音的推送通知?

shell - linux环境下后台进程的优先级是什么