http://www.daxueit.com/article/4746.html
[摘要]本文是对Android -- 程序判断手机ROOT状态,获取ROOT权限的讲解,对学习Android编程技术有所帮助,与大家分享。
判断手机是否具有ROOT权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/**
* 判断手机是否ROOT
*/
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);
// 返回<span id="0_nwp" style="width: auto; height: auto; float: none;"><a id="0_nwl" href="http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Edaxueit%2Ecom%2Farticle%2F4746%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00007110_cpr&k=%CF%B5%CD%B3&k0=android&kdi0=8&k1=%B1%E0%B3%CC%BC%BC%CA%F5&kdi1=8&k2=%B1%E0%B3%CC&kdi2=8&k3=%CA%D6%BB%FA&kdi3=8&k4=%CF%B5%CD%B3&kdi4=8&k5=%D1%A7%CF%B0&kdi5=8&sid=ee20c8ebb8e6507b&ch=0&tu=u1704338&jk=def0d50c067579ac&cf=29&fv=15&stid=9&urlid=0&luki=5&seller_id=1&di=128" target="_blank" mpid="0" style="text-decoration: none;"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">系统</span></a></span>包名
String apkRoot =
"chmod 777 "
+ getPackageCodePath();
RootCommand(apkRoot);
}
/**
* 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限)
*
* @param command
* 命令: String apkRoot="chmod 777 "+getPackageCodePath();
* RootCommand(apkRoot);
* @return 应用程序是/否获取Root权限
*/
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
;
}
}
|