標籤:android   網路狀態   wifi   3g   
Android 監測網路狀態     我們在使用Android手機時候,一些APP需要網路環境才能運行,所以手機需要可用的網路,不管是2G、3G或者WIFI,甚至有一些比較耗流量的APP只能在WIFI的環境下運行,或者提供使用者自行選擇是否只能在WIFI環境下運行,作為使用者貌似後者體驗更好,那麼作為開發人員,我們僅僅需要幾步就能給使用者這種體驗。-----------------------------------------------------------------------------------------------------------------------------1.
許可權添加:APP需要連網,以及需要訪問網路狀態,所以在AndroidManifest.xml中添加許可權。
    <uses-permission android:name= "android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.
狀態擷取:行動電話通訊有資料(2G/3G/4G)串連、WIFI串連兩種狀態,可以區分擷取和笼統的擷取。
/** * 檢查WIFI是否串連 *  * @author Ysjian * @date 2014-5-9 * @return 如果串連了返回true,否則返回false */public boolean isWifiConnected() {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);return wifiInfo != null;}/** * 檢查行動電話通訊(4G/3G/2G)是否串連 *  * @author Ysjian * @date 2014-5-9 * @return 如果串連了返回true,否則返回false */public boolean isMobileNetworkConnected() {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mobileNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);return mobileNetworkInfo != null;}/** * 檢查是否有可用網路 *  * @author Ysjian * @date 2014-5-9 * @return 存在WIFI和行動數據任意可用網路返回true,否則返回false */public boolean hasActivityNetwork() {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);return connectivityManager.getActiveNetworkInfo() != null;}3.
跳轉設定:如果沒有網路,跳轉到網路設定介面,可以根據具體需求調用上面的三個方法之一來判斷網路狀態。
if (!hasActivityNetwork()) {       AlertDialog.Builder builder = new AlertDialog.Builder(this );       builder. setTitle( "沒有可用的網路" )                   .setMessage( "是否對網路進行設定?" )                   .setPositiveButton( "是" ,                         new DialogInterface.OnClickListener() {                                     @Override                                     public void onClick(DialogInterface dialog,int which) {                                               Intent intent = null ;                                               intent = newIntent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);                                               startActivity(intent);                                     }                     })                    .setNegativeButton( "否" ,                           new DialogInterface.OnClickListener() {                                   @Override                                    public void onClick(DialogInterface dialog, int which) {                                               dialog.dismiss();                                     }                           }).show();}文章來源:http://blog.csdn.net/ysjian_pingcx/article/details/25461053