Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解
更新時間:2017年04月11日 10:53:16 投稿:lqh
這篇文章主要介紹了Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解的相關(guān)資料,需要的朋友可以參考下
Android 判斷網(wǎng)絡(luò)狀態(tài)實例詳解
實例代碼
package com.example.android; import java.io.IOException; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.URL; import java.util.Enumeration; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.telephony.TelephonyManager; public class NetStatus { public static int NET_CNNT_BAIDU_OK = 1; // 正常訪問因特網(wǎng)狀態(tài) public static int NET_CNNT_BAIDU_TIMEOUT = 2; // 無法訪問因特網(wǎng)狀態(tài) public static int NET_NOT_PREPARE = 3; // 網(wǎng)絡(luò)未準(zhǔn)備好 public static int NET_ERROR = 4; private static int TIMEOUT = 3000; /** * 返回當(dāng)前網(wǎng)絡(luò)狀態(tài) * * @param context * @return */ public static int getNetState(Context context) { try { ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo networkinfo = connectivity.getActiveNetworkInfo(); if (networkinfo != null) { if (networkinfo.isAvailable() && networkinfo.isConnected()) { if (!connectionNetwork()) return NET_CNNT_BAIDU_TIMEOUT; else return NET_CNNT_BAIDU_OK; } else { return NET_NOT_PREPARE; } } } } catch (Exception e) { } return NET_ERROR; } /** * 拼百度地址 * * @return */ private static boolean connectionNetwork() { boolean result = false; HttpURLConnection httpUrl = null; try { httpUrl = (HttpURLConnection) new URL("http://www.baidu.com").openConnection(); httpUrl.setConnectTimeout(TIMEOUT); httpUrl.connect(); result = true; } catch (IOException e) { } finally { if (null != httpUrl) { httpUrl.disconnect(); } httpUrl = null; } return result; } /** * 判斷當(dāng)前網(wǎng)絡(luò)是否是3G網(wǎng)絡(luò) * * @param context * @return boolean */ public static boolean is3G(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) { return true; } return false; } /** * 判斷當(dāng)前網(wǎng)絡(luò)是否是wifi網(wǎng)絡(luò) * * @param context * @return boolean */ public static boolean isWifi(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; } /** * 判斷當(dāng)前網(wǎng)絡(luò)是否是2G網(wǎng)絡(luò) * * @param context * @return boolean */ public static boolean is2G(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && (activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE || activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS || activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_CDMA)) { return true; } return false; } /** * wifi是否打開 */ public static boolean isWifiEnabled(Context context) { ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS); } /** * 獲得本機(jī)ip地址 * * @return */ public static String GetHostIp() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> ipAddr = intf.getInetAddresses(); ipAddr.hasMoreElements();) { InetAddress inetAddress = ipAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress(); } } } } catch (SocketException ex) { } catch (Exception e) { } return null; } /** * 獲取本機(jī)串號imei * * @param context * @return */ public static String getIMEI(Context context) { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); return telephonyManager.getDeviceId(); } }
添加權(quán)限:訪問網(wǎng)絡(luò)權(quán)限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/>
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:
- Android仿QQ微信實時監(jiān)測網(wǎng)絡(luò)狀態(tài)
- Android BroadcastReceiver實現(xiàn)網(wǎng)絡(luò)狀態(tài)實時監(jiān)聽
- Android檢查網(wǎng)絡(luò)狀態(tài)工具類詳解
- android 監(jiān)聽網(wǎng)絡(luò)狀態(tài)的變化及實戰(zhàn)的示例代碼
- Android判斷網(wǎng)絡(luò)狀態(tài)的代碼
- Android 判斷網(wǎng)絡(luò)狀態(tài)及開啟網(wǎng)路
- Android 監(jiān)聽網(wǎng)絡(luò)狀態(tài)方法詳解
- Android 廣播監(jiān)聽網(wǎng)絡(luò)狀態(tài)詳解及實例代碼
- Android中利用NetworkInfo判斷網(wǎng)絡(luò)狀態(tài)時出現(xiàn)空指針(NullPointerException)問題的解決方法
- Android使用觀察者模式Observer實現(xiàn)網(wǎng)絡(luò)狀態(tài)監(jiān)聽
相關(guān)文章
android Socket實現(xiàn)簡單聊天功能以及文件傳輸
這篇文章主要介紹了android Socket實現(xiàn)簡單聊天功能以及文件傳輸,非常具有實用價值,有需要的朋友可以參考下。2017-02-02實例講解Android應(yīng)用中自定義組合控件的方法
這篇文章主要介紹了實例講解Android應(yīng)用中自定義組合控件的方法,通過例子講解了view組合控件及自定義屬性的用法,需要的朋友可以參考下2016-04-04Android操作SQLite數(shù)據(jù)庫(增、刪、改、查、分頁等)及ListView顯示數(shù)據(jù)的方法詳解
這篇文章主要介紹了Android操作SQLite數(shù)據(jù)庫(增、刪、改、查、分頁等)及ListView顯示數(shù)據(jù)的方法,結(jié)合實例形式詳細(xì)分析了Android操作SQLite數(shù)據(jù)庫及使用ListView顯示數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下2016-02-02