本人博客原文
在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
)
{
}
systemRootState
=
kSystemRootStateDisable
;
return
false
;
}