2011-10-11 109 views
0

我正在編寫一個應用程序來訪問許多系統設備節點。爲了打開設備節點,我編寫了本地方法,當我試圖執行它時,我無法打開設備節點,因爲對我的應用程序沒有root權限。任何人都可以告訴給我的android應用程序的根權限。設備的詳細信息:Android 2.0.1 - 摩托羅拉里程碑。需要root權限到android應用程序

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; 
} 

它總是說無法打開設備,任何人都可以請建議一個解決方案來打開設備節點。

回答

2

首先,你顯然需要一個紮根電話才能工作。

這就是說,Android不允許用戶應用程序獲得超級用戶權限,即使是在固定電話上也是如此。相反,它允許您啓動具有超級用戶權限的新流程。

運行的東西作爲超級用戶的最簡單的方法是創建一個虛擬終端,如下所示:

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

使用的輸入和輸出流你現在有效地具有控制檯訪問作爲根,則可以使用運行典型的命令行命令,或運行爲您訪問設備的進程。