对Android应用程序所需的root权限

时间:2011-10-11 07:43:06

标签: android android-ndk android-manifest kernel32

我正在编写一个应用程序来访问许多系统设备节点。要打开设备节点,我编写了本机方法,当我尝试执行它时,我无法打开设备节点,因为我的应用程序没有root权限。请问任何人请告诉我的Android应用程序的root权限。设备细节:android 2.0.1 - motorola里程碑。

rtc_fd=open("/dev/rtc",0777);
if(rtc_fd == -1) {
    __android_log_write(ANDROID_LOG_ERROR, "","UNABLE TO OPEN THE DEVICE....");
    strcpy(result_string,"Fail: /dev/rtc open error\n");
    __android_log_write(ANDROID_LOG_ERROR, ""," DEVICE...ERROR. ");
    return result_string;
}

ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm);
if (ret == -1) {
    strcpy(result_string,"Fail: rtc ioctl RTC_RD_TIME error\r\n");
    return result_string;
}

总是说无法打开设备,任何人都可以提出打开设备节点的解决方案。

1 个答案:

答案 0 :(得分:2)

首先,你显然需要一个有根电话才能使用它。

话虽这么说,Android不允许用户应用程序获得超级用户权限,即使在root用户手机上也是如此。相反,它允许您启动具有超级用户权限的新流程。

以超级用户身份运行的最简单方法是创建虚拟终端,如下所示:

Process proc = Runtime.getRuntime().exec("su");
DataOutputStream standard_in = new DataOutputStream(proc.getOutputStream());
DataInputStream standard_out = new DataInputStream(proc.getInputStream());

使用输入和输出流,您现在可以有效地以root身份访问控制台,您可以使用它来运行典型的命令行命令,或者运行为您访问设备的过程。