对网络状态监控的两种方法,提示用户联网

第一种是使用广播实现对网络的监听

 1 //对网络监听的广播
 2 public class ConnectionChangeReceiver extends BroadcastReceiver {
 3     @Override
 4     public void onReceive(Context context, Intent intent) {    
 5         ConnectivityManager cm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
 6         //获取网络状态
 7         NetworkInfo minfo=cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);//手机联网
 8         NetworkInfo winfo=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);//WIfi联网
 9         if(!minfo.isConnected()&&!winfo.isConnected()){
10             Toast.makeText(context, "網絡已斷開", Toast.LENGTH_SHORT).show();
11         }else{
12             Toast.makeText(context, "網絡已連接", Toast.LENGTH_SHORT).show();
13         }
14     }
15 }

注册监听,可以在onCreate方法中就实现注册

1 //注册网络(判断网络是否已经连接)
2     public void getNetwork(){
3         IntentFilter inf=new IntentFilter();
4         inf.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
5         receiverlistener=new ConnectionChangeReceiver();//receiverlistener广播
6         registerReceiver(receiverlistener, inf);//注册广播
7     }

注册之后也应该记得取消监听,一般放在onDestroy就行了

1 //销毁网络
2     @Override
3     protected void onDestroy() {
4         super.onDestroy();
5         this.unregisterReceiver(receiverlistener);
6     }

在清单文件中配置

1 <!-- 网络连接监听 -->
2         <receiver android:name="com.techrare.user.ConnectionChangeReceiver" android:label="NetworkConnection">  
3            <intent-filter>   
4                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
5                 <action android:name="android.intent.action.USER_PRESENT" />   
6            </intent-filter>        
7         </receiver>       

这样一来就实现了对网络的监控,除了这种方法还有另外一种,其实做法也差不多,进入app之后,如果没有网络,则弹出一个对话框,提示用户没有网络,进而设置网络

 1 // 判断网络是否可用  
 2         if(HttpConn.isOpenNetwork2(MainActivity.this) == true) {      
 3             System.out.println("==有網==");         
 4         } else {  
 5             AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);  
 6             builder.setTitle("沒有可用的網絡").setMessage("是否對網絡進行設置");  
 7             builder.setPositiveButton("是", new DialogInterface.OnClickListener() {  
 8                 @Override  
 9                 public void onClick(DialogInterface dialog, int which) {  
10                     Intent intent = null;    
11                     try {  
12                         String sdkVersion = android.os.Build.VERSION.SDK;  
13                         if(Integer.valueOf(sdkVersion) > 10) {  
14                             intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);  
15                         }else {  
16                             intent = new Intent();  
17                             ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");  
18                             intent.setComponent(comp);  
19                             intent.setAction("android.intent.action.VIEW");  
20                         }  
21                         startActivityForResult(intent, reqfalg);  
22                     } catch (Exception e) {  
23                         e.printStackTrace();  
24                     }  
25                 }  
26             }).setNegativeButton("否", new DialogInterface.OnClickListener() {  
27                 @Override  
28                 public void onClick(DialogInterface dialog, int which) {  
29                     dialog.cancel();          
30                     finish();  
31                 }  
32             }).show(); 
33         }       

检查网络是否连接

1   //判断是否联网
2   public static boolean isOpenNetwork2(Context context) {
3      ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);  
4      if(connManager.getActiveNetworkInfo() != null) {  
5           return connManager.getActiveNetworkInfo().isAvailable();  //网络可用
6      }  
7      return false;
8   }

第二种方法对每一个需要联网的功能都需要监听一下,有网则放行,没有网络就提示用户,不让用户作此操作。

 

posted @ 2013-11-23 14:32  小小缘  阅读(681)  评论(0编辑  收藏  举报