两种例子
01
/**
02
* 移动网络开关
03
*/
04
privatevoidtoggleMobileData(Context context,booleanenabled) {
05
ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
06
Class<?> conMgrClass =null;// ConnectivityManager类
07
Field iConMgrField =null;// ConnectivityManager类中的字段
08
Object iConMgr =null;// IConnectivityManager类的引用
09
Class<?> iConMgrClass =null;// IConnectivityManager类
10
Method setMobileDataEnabledMethod =null;// setMobileDataEnabled方法
11
try{
12
// 取得ConnectivityManager类
13
conMgrClass = Class.forName(conMgr.getClass().getName());
14
// 取得ConnectivityManager类中的对象mService
15
iConMgrField = conMgrClass.getDeclaredField("mService");
16
// 设置mService可访问
17
iConMgrField.setAccessible(true);
18
// 取得mService的实例化类IConnectivityManager
19
iConMgr = iConMgrField.get(conMgr);
20
// 取得IConnectivityManager类
21
iConMgrClass = Class.forName(iConMgr.getClass().getName());
22
// 取得IConnectivityManager类中的setMobileDataEnabled(boolean)方法
23
setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
24
// 设置setMobileDataEnabled方法可访问
25
setMobileDataEnabledMethod.setAccessible(true);
26
// 调用setMobileDataEnabled方法
27
setMobileDataEnabledMethod.invoke(iConMgr, enabled);
28
}catch(ClassNotFoundException e) {
29
e.printStackTrace();
30
}catch(NoSuchFieldException e) {
31
e.printStackTrace();
32
}catch(SecurityException e) {
33
e.printStackTrace();
34
}catch(NoSuchMethodException e) {
35
e.printStackTrace();
36
}catch(IllegalArgumentException e) {
37
e.printStackTrace();
38
}catch(IllegalAccessException e) {
39
e.printStackTrace();
40
}catch(InvocationTargetException e) {
41
e.printStackTrace();
42
}
43
}
第二种
01
privatevoidsetMobileDataEnabled(Context context,booleanenabled) {
02
finalString TAG ="setMobileDataEnabled";
03
finalConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
04
Class conmanClass;
05
try{
06
conmanClass = Class.forName(conman.getClass().getName());
07
finalField iConnectivityManagerField = conmanClass.getDeclaredField("mService");
08
iConnectivityManagerField.setAccessible(true);
09
finalObject iConnectivityManager = iConnectivityManagerField.get(conman);
10
finalClass iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
11
finalMethod setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
12
setMobileDataEnabledMethod.setAccessible(true);
13
14
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
15
}catch(ClassNotFoundException e) {
16
// TODO Auto-generated catch block
17
Log.d(TAG,"ClassNotFoundException");
18
}catch(NoSuchFieldException e) {
19
Log.d(TAG,"NoSuchFieldException");
20
}catch(IllegalArgumentException e) {
21
Log.d(TAG,"IllegalArgumentException");
22
}catch(IllegalAccessException e) {
23
Log.d(TAG,"IllegalAccessException");
24
}catch(NoSuchMethodException e) {
25
Log.d(TAG,"NoSuchMethodException");
26
}catch(InvocationTargetException e) {
27
Log.d(TAG,"InvocationTargetException");
28
}finally{
29
30
}
31
32
}
打开GPS,在2.3.5系统测试可以通过,在4.1.1系统中测试无效
01
/**
02
* <p>GPS开关
03
* <p>当前若关则打开
04
* <p>当前若开则关闭
05
*/
06
privatevoidtoggleGPS() {
07
Intent gpsIntent =newIntent();
08
gpsIntent.setClassName("com.android.settings","com.android.settings.widget.SettingsAppWidgetProvider");
09
gpsIntent.addCategory("android.intent.category.ALTERNATIVE"); gpsIntent.setData(Uri.parse("custom:3"));
10
try{
11
PendingIntent.getBroadcast(this,0, gpsIntent,0).send();
12
}catch(CanceledException e) {
13
e.printStackTrace();
14
}
15
}