Android 監測網路狀態 我們在使用Android手機時候,一些APP需要網路環境才能運行,所以手機需要可用的網路,不管是2G、3G或者WIFI,甚至有一些比較耗流量的APP只能在WIFI的環境下運行,或者提供使用者自行選擇是否只能在WIFI環境下運行,作為使用者貌似後者體驗更好,那麼作為開發人員,我們僅僅需要幾步就能給使用者這種體驗。-----------------------------------------------------------------------------------------------------------------------------1.許可權添加:APP需要連網,以及需要訪問網路狀態,所以在AndroidManifest.xml中添加許可權。
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