获取 Android 应用程序的 'root' 权限

9
我想知道如何从Android应用程序获取root权限? Android市场上有没有相关的应用程序?
我尝试了以下代码来列出文件,但什么也没发生。
Process process = Runtime.getRuntime().exec(new String[] { "su", "-", "root"});

在我的清单文件中,我试图给TEST_FACTORY权限,但是我收到了一个错误提示“只允许给系统应用程序分配权限”。

我该如何将我的应用程序变成系统应用程序?

我希望能得到关于这些内容的帮助(如果可能的话,使应用程序获取root权限)。非常感谢任何关于此的帮助。提前致谢 :)


3
具有 root 权限的应用程序和系统应用程序之间存在很大差异。你需要哪一个? - Simon
1
嗯,重新阅读你的问题,似乎你正在尝试编写自己的“supersu”替代品?如果是这样:你不能用Java来实现。你需要使用C来编写和编译可在Android内核上本地运行的可执行文件。当然,这个可执行文件可以插入任何处理用户交互的Java APK中,但你仍然需要su可执行文件来调用你的Java应用程序。 - Johannes H.
@JohannesH。好的,那么我在我的问题中发布的代码有什么问题?它为什么不起作用? - ik024
@JohannesH。所以如果我想在另一台设备上测试应用程序,那么该设备也应该被root吗? - ik024
并且,是否可以在模拟器中测试它? - ik024
显示剩余8条评论
2个回答

6

5

首先:请注意,只能使用su执行shell命令(即只能使用root用户执行shell命令,而不能使用Java代码)。

其次:不确定是否适用于所有su应用程序,但这是我的手机上su的帮助消息:

Usage: su [options] [--] [-] [LOGIN] [--] [args...]

Options:  
  --daemon                      start the su daemon agent  
  -c, --command COMMAND         pass COMMAND to the invoked shell  
  -h, --help                    display this help message and exit  
  -, -l, --login                pretend the shell to be a login shell  
  -m, -p,  
  --preserve-environment        do not change environment variables  
  -s, --shell SHELL             use SHELL instead of the default /system/bin/sh  
  -u                            display the multiuser mode and exit  
  -v, --version                 display version number and exit  
  -V                            display version code and exit,  
                                this is used almost exclusively by Superuser.apk  

这意味着:你需要运行su -c something(或者su -c something - root,但是root通常是默认的)。在大多数Linux系统上,这与su命令相同,除了守护程序处理su调用的常规Linux系统上没有守护程序。
如果其他su命令行为不同(这是可能的),则更安全的做法是打开一个shell流,执行su,评估其返回代码,然后继续执行其他命令,最后执行exit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接