• Android中判断网络连接是否可用及监控网络状态


    来源:http://www.jb51.net/article/32920.htm

    获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

     1 public boolean isNetworkConnected(Context context) { 
     2 if (context != null) { 
     3 
     4 ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
     5 .getSystemService(Context.CONNECTIVITY_SERVICE); 
     6 
     7 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 
     8 
     9 if (mNetworkInfo != null) { 
    10 
    11 return mNetworkInfo.isAvailable(); 
    12 
    13 } 
    14 
    15 } 
    16 
    17 return false; 
    18 }
    一,判断是否有网络连接
     1 public boolean isWifiConnected(Context context) { 
     2 if (context != null) { 
     3 
     4 ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
     5 .getSystemService(Context.CONNECTIVITY_SERVICE); 
     6 
     7 NetworkInfo mWiFiNetworkInfo = mConnectivityManager 
     8 .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     9 
    10 if (mWiFiNetworkInfo != null) { 
    11 
    12 return mWiFiNetworkInfo.isAvailable(); 
    13 
    14 } 
    15 
    16 } 
    17 
    18 return false; 
    19 }
    二,判断WIFI网络是否可用
     1 public boolean isMobileConnected(Context context) { 
     2 
     3 if (context != null) { 
     4 
     5 ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
     6 .getSystemService(Context.CONNECTIVITY_SERVICE); 
     7 
     8 NetworkInfo mMobileNetworkInfo = mConnectivityManager 
     9 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    10 
    11 if (mMobileNetworkInfo != null) { 
    12 
    13 return mMobileNetworkInfo.isAvailable(); 
    14 
    15 } 
    16 
    17 } 
    18 
    19 return false; 
    20 }
    三,判断移动网络是否可用
     1 public static int getConnectedType(Context context) { 
     2 
     3 if (context != null) { 
     4 
     5 ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
     6 .getSystemService(Context.CONNECTIVITY_SERVICE); 
     7 
     8 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 
     9 
    10 if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { 
    11 
    12 return mNetworkInfo.getType(); 
    13 
    14 } 
    15 
    16 } 
    17 
    18 return -1; 
    19 }
    四,获取当前网络连接的类型信息

    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。
    ConnectivityManager有四个主要任务
    1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
    2、手机状态发生改变时,发送广播
    3、当一个网络连接失败时进行故障切换
    4、为应用程序提供可以获取可用网络的高精度和粗糙的状态
    当我们要在程序中监听网络状态时,只要一下几个步骤即可:
    1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观 

     1 connectionReceiver = new BroadcastReceiver() { 
     2 @Override 
     3 public void onReceive(Context context, Intent intent) { 
     4 ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
     5 NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     6 NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     7 if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) { 
     8 Log.i(TAG, "unconnect"); 
     9 // unconnect network 
    10 }else { 
    11 // connect network 
    12 } 
    13 } 
    14 };
    View Code

    2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

    1 IntentFilter intentFilter = new IntentFilter(); 
    2 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
    3 registerReceiver(connectionReceiver, intentFilter);
    View Code

    3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

    1 if (connectionReceiver != null) { 
    2 unregisterReceiver(connectionReceiver); 
    3 }
    View Code
  • 相关阅读:
    Linux02--文件系统与磁盘管理
    Android02-Activity01
    Android01-概述
    LeetCode | Binary Tree Level Order Traversal II
    LeetCode | Binary Tree Level Order Traversal
    LeetCode | Binary Tree Postorder Traversal
    LeetCode | Binary Tree Inorder Traversal
    LeetCode | Binary Tree Preorder Traversal
    LeetCode | Symmetric Tree
    LeetCode | Balanced Binary Tree
  • 原文地址:https://www.cnblogs.com/Miami/p/4210386.html
Copyright © 2020-2023  润新知