第一种是使用广播实现对网络的监听
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 }
第二种方法对每一个需要联网的功能都需要监听一下,有网则放行,没有网络就提示用户,不让用户作此操作。