天天看點

程式判斷手機ROOT狀态,擷取ROOT權限

判斷手機是否具有ROOT權限

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public

boolean

isRoot() { 

boolean

root =

false

try

if

((!

new

File(

"/system/bin/su"

).exists()) 

&& (!

new

File(

"/system/xbin/su"

).exists())) { 

root =

false

}

else

root =

true

}

catch

(Exception e) { 

return

root; 

}

上面傳回的參數就知道手機是否具有ROOT權限了。

向ROOT權限發送請求資訊,以擷取ROOT權限

此方法不涉及底層, 這種方式需要使用者點選确認才可以擷取.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

public

class

MainActivity

extends

Activity { 

public

void

onCreate(Bundle savedInstanceState) { 

super

.onCreate(savedInstanceState); 

setContentView(R.layout.main); 

// 傳回系統包名 

String apkRoot =

"chmod 777 "

+ getPackageCodePath(); 

RootCommand(apkRoot); 

public

static

boolean

RootCommand(String command) { 

Process process =

null

DataOutputStream os =

null

try

process = Runtime.getRuntime().exec(

"su"

); 

os =

new

DataOutputStream(process.getOutputStream()); 

os.writeBytes(command +

"\n"

); 

os.writeBytes(

"exit\n"

); 

os.flush(); 

process.waitFor(); 

}

catch

(Exception e) { 

Log.d(

"*** DEBUG ***"

,

"ROOT REE"

+ e.getMessage()); 

return

false

}

finally

try

if

(os !=

null

) { 

os.close(); 

process.destroy(); 

}

catch

(Exception e) { 

Log.d(

"*** DEBUG ***"

,

"Root SUC "

); 

return

true

}