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

时间:2011-03-14 00:45:00

标签: android sdk permissions manifest root

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

我在文档中看到了this link,特别注意到the FACTORY_TEST permission

  

public static final String FACTORY_TEST

     

自:API Level 1

     

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

这是最好的方法吗?

如果无法使用SDK,我该如何让“root”应用程序工作?

3 个答案:

答案 0 :(得分:30)

您需要做的是:

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

这会导致SuperUser显示,允许您从root访问权限允许或阻止它。如果用户未植根,则此方法可能不起作用。 Here是一种可以测试它的方法。

答案 1 :(得分:14)

首先让我们掌握正确的基础知识。 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。这样的命令作为新用户执行,然后运行su的终端窗口或控制台在命令完成执行后或在其启动的任何程序关闭后立即返回到前用户的帐户。({ {3}})

替代选项

替代上述方法另一种可能的方法是使用命令行将应用程序复制到/system/app/目录。然后,您的应用程序将以root权限自动运行(与系统应用程序相同)

答案 2 :(得分:9)

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