Android网络开启、关闭整理

Android网络开启、关闭整理

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); 
     }
}

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


      转载地址:http://www.cnblogs.com/huazaizai/p/3398675.html



你可能感兴趣的:(Android,网络)