2016-01-04 107 views
0

我有我試圖從一個特定的文件夾中讀取文件/SD卡/視頻有根設備使用的FileInputStream,併成功創建了超級用戶權限的FileInputStream對象,看我的根設備上的所有系統文件該文件夾的CHECKSUM值,現在我想從我的系統文件夾讀取所有文件併爲其創建校驗和值,但是當我傳遞的文件夾路徑爲/system我無法讀取少量文件並獲取以下內容錯誤:如何授權

java.io.FileNotFoundException: system/bin/run-as: open failed: EACCES (Permission denied) 

我該如何克服這一點,我該如何授予超級用戶燙髮ission或root訪問來讀取所有系統相關的文件?

簡化:使用的FileInputStream紮根設備上

回答

0

編程方式讀取文件從SD卡/系統文件夾還沒有嘗試過呢

Process p = Runtime.getRuntime().exec(new String[]{"su", "-c", "system/bin/sh"}); 
DataOutputStream stdin = new DataOutputStream(p.getOutputStream()); 
//from here all commands are executed with su permissions 
stdin.writeBytes("md5sum filepath"); 
    /* executes the md5sum binary command,replace with installation path of md5sum after you install busybox */ 
InputStream stdout = p.getInputStream(); 
byte[] buffer = new byte[BUFF_LEN]; 
int read; 
String out = new String(); 
//read method will wait forever if there is nothing in the stream 
//so we need to read it in another way than while((read=stdout.read(buffer))>0) 
while(true){ 
    read = stdout.read(buffer); 
    out += new String(buffer, 0, read); 
    if(read<BUFF_LEN){ 
     //we have read everything 
     break; 
    } 
} 

通過調用md5sum二進制 即創建校驗和。如果您已經安裝在設備上BusyBox

+0

是不是有沒有複製的方式,因爲我執行此操作每五分鐘和校驗值發送給服務器,因此這不是一個好主意,我想 – Govarthanan

+0

看到我的編輯@Govarthanan – insomniac