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


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

     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   }

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

    经验的积累在于平时的点滴、
  • 相关阅读:
    下载安装安卓开发工具
    斐波那契数列
    各位相加
    求连续最大子序列和
    反转字符串中的单词
    统计位数为偶数的数字
    Express框架的整体感知
    node.js当中的http模块与url模块的简单介绍
    formidable处理提交的表单或文件的简单介绍
    30分钟,学会经典小游戏编程!
  • 原文地址:https://www.cnblogs.com/yrhua/p/3438983.html
Copyright © 2020-2023  润新知