在Android中,虽然我们可以通过 Runtime.getRuntime().exec("su") 的方式来判断一个手机是否Root,


但是该方式会弹出对话框让用户选择是否赋予该应用程序Root权限,有点不友好。


其实我们可以在环境变量$PATH所列出的所有目录中查找是否有 su 文件来判断一个手机是否Root。


当然即使有su文件,也并不能完全表示手机已经Root,但是实际使用中作为一个初略的判断已经很好了。


另外出于效率的考虑,我们可以在代码中直接把$PATH写死。


实例1

private

final

static

int
kSystemRootStateUnknow
=-
1
;


private

final

static

int
kSystemRootStateDisable
=
0
;


private

final

static

int
kSystemRootStateEnable
=
1
;


private

static

int
systemRootState
=
kSystemRootStateUnknow
;




public

static

boolean
isRootSystem
()


{


if
(
systemRootState
==
kSystemRootStateEnable
)


{


return

true
;


}


else

if
(
systemRootState
==
kSystemRootStateDisable
)


{






return

false
;


}


File
f
=
null
;


final

String
kSuSearchPaths
[]={
"/system/bin/"
,
"/system/xbin/"
,
"/system/sbin/"
,
"/sbin/"
,
"/vendor/bin/"
};


try
{


for
(
int
i
=
0
;
i
<
kSuSearchPaths
.
length
;
i
++)


{

f
=
new

File
(
kSuSearchPaths
[
i
]+
"su"
);


if
(
f
!=
null
&&
f
.
exists
())


{

systemRootState
=
kSystemRootStateEnable
;


return

true
;


}


}


}
catch
(
Exception
e
)


{


}