我如何通过Android SDK获得root权限?

我正在学习Android编程,我想创build一个必须以root身份运行的应用程序。 合乎逻辑的是在Android Manifest中添加一个根权限。

我在文档中看到了这个链接 ,并特别指出了FACTORY_TEST权限 :

public static final String FACTORY_TEST

因为:API级别1

作为制造商testing应用程序运行,以root用户身份运行。 仅当设备在制造商testing模式下运行时才可用。 常量值:“android.permission.FACTORY_TEST”

这是最好的方法吗?

如果无法使用SDK,我怎样才能使“根”应用程序工作?

你需要做的是这样的:

 Process root = Runtime.getRuntime().exec("su"); 

这会导致超级用户显示,它允许您允许或阻止从根访问。 如果用户没有根,这种方法可能不起作用。 这是一种可以testing的方法。

首先让我们获得基本的权利。 Android下面运行Linux内核。 现在,如果你必须以超级用户权限运行你的进程(以root身份运行),唯一的办法就是通过command line来执行你的进程,因为这是你直接与内核交互的唯一方式。 在运行任何命令之前,您还需要使用su 。 也正如克里斯在第一回答的评论中提到的那样

 Process process = Runtime.getRuntime().exec("su"); 

几乎什么都不会做。 它只会要求使用对话框的超级使用权限。 你可以做的是,而不是只是执行su你可以用su执行你的进程如下

 Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand}); 

-c选项

su最常用的选项是-c,它告诉su to execute the command that directly follows it on the same line 。 这样的命令是作为新用户来执行的,然后在命令执行结束后,或者任何已经启动的程序closures后,运行su的terminal窗口或控制台立即返回到前一个用户的账户。 细节 )

备用选项

上述方法的另一种方法可能是使用命令行将应用程序复制到/system/app/目录。 然后你的应用程序将以root权限自动运行(与系统应用程序相同)( 更多关于Android分区 )

SDK不提供以root身份运行应用程序的方法。