Android网络开启、关闭整理http://www.cnblogs.com/huazaizai/p/3398675.html

出自:http://www.cnblogs.com/huazaizai/p/3398675.html

WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package  com.my.device_admin.business;
 
import  java.lang.reflect.Method;
 
import  android.content.Context;
import  android.content.Intent;
import  android.net.ConnectivityManager;
import  android.net.NetworkInfo;
import  android.net.wifi.WifiManager;
import  android.provider.Settings;
 
public  class  NetworkManager {
 
     private  Context context;
     private  ConnectivityManager connManager;
 
     public  NetworkManager(Context context) {
         this .context = context;
         connManager = (ConnectivityManager) this .context
                 .getSystemService(Context.CONNECTIVITY_SERVICE);
     }
 
     /**
      * @return 网络是否连接可用
      */
     public  boolean  isNetworkConnected() {
 
         NetworkInfo networkinfo = connManager.getActiveNetworkInfo();
 
         if  (networkinfo != null ) {
             return  networkinfo.isConnected();
         }
 
         return  false ;
     }
 
     /**
      * @return wifi是否连接可用
      */
     public  boolean  isWifiConnected() {
 
         NetworkInfo mWifi = connManager
                 .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 
         if  (mWifi != null ) {
             return  mWifi.isConnected();
         }
 
         return  false ;
     }
 
     /**
      * 当wifi不能访问网络时,mobile才会起作用
      * @return GPRS是否连接可用
      */
     public  boolean  isMobileConnected() {
 
         NetworkInfo mMobile = connManager
                 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 
         if  (mMobile != null ) {
             return  mMobile.isConnected();
         }
         return  false ;
     }
 
     /**
      * GPRS网络开关 反射ConnectivityManager中hide的方法setMobileDataEnabled 可以开启和关闭GPRS网络
      *
      * @param isEnable
      * @throws Exception
      */
     public  void  toggleGprs( boolean  isEnable) throws  Exception {
         Class<?> cmClass = connManager.getClass();
         Class<?>[] argClasses = new  Class[ 1 ];
         argClasses[ 0 ] = boolean . class ;
 
         // 反射ConnectivityManager中hide的方法setMobileDataEnabled,可以开启和关闭GPRS网络
         Method method = cmClass.getMethod( "setMobileDataEnabled" , argClasses);
         method.invoke(connManager, isEnable);
     }
 
     /**
      * WIFI网络开关
      *
      * @param enabled
      * @return 设置是否success
      */
     public  boolean  toggleWiFi( boolean  enabled) {
         WifiManager wm = (WifiManager) context
                 .getSystemService(Context.WIFI_SERVICE);
         return  wm.setWifiEnabled(enabled);
 
     }
     
     /**
      *
      * @return 是否处于飞行模式
      */
     public  boolean  isAirplaneModeOn() { 
         // 返回值是1时表示处于飞行模式 
         int  modeIdx = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0 ); 
         boolean  isEnabled = (modeIdx == 1 );
         return  isEnabled;
    
     /**
      * 飞行模式开关
      * @param setAirPlane
      */
     public  void  toggleAirplaneMode( boolean  setAirPlane) { 
         Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1  : 0 ); 
         // 广播飞行模式信号的改变,让相应的程序可以处理。 
         // 不发送广播时,在非飞行模式下,Android 2.2.1上测试关闭了Wifi,不关闭正常的通话网络(如GMS/GPRS等)。 
         // 不发送广播时,在飞行模式下,Android 2.2.1上测试无法关闭飞行模式。 
         Intent intent = new  Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); 
         // intent.putExtra("Sponsor", "Sodino"); 
         // 2.3及以后,需设置此状态,否则会一直处于与运营商断连的情况 
         intent.putExtra( "state" , setAirPlane); 
         context.sendBroadcast(intent); 
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值