Android網(wǎng)絡(luò)判斷知識(shí)小結(jié)
Android中判斷當(dāng)前網(wǎng)絡(luò)是否可用
應(yīng)用場(chǎng)景:實(shí)現(xiàn)判斷當(dāng)前網(wǎng)絡(luò)是否可用
當(dāng)前有可用網(wǎng)絡(luò),如下圖:
當(dāng)前沒(méi)有可用網(wǎng)絡(luò),如下圖:
實(shí)現(xiàn)步驟:
1、獲取ConnectivityManager對(duì)象
Context context = activity.getApplicationContext(); // 獲取手機(jī)所有連接管理對(duì)象(包括對(duì)wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對(duì)象
// 獲取NetworkInfo對(duì)象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)是否為連接狀態(tài)
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; }
4、在AndroidManifest.xml中添加訪問(wèn)當(dāng)前網(wǎng)絡(luò)狀態(tài)權(quán)限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
代碼如下:
public class ClassTestDemoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (isNetworkAvailable(ClassTestDemoActivity.this)) { Toast.makeText(getApplicationContext(), "當(dāng)前有可用網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "當(dāng)前沒(méi)有可用網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show(); } } /** * 檢查當(dāng)前網(wǎng)絡(luò)是否可用 * * @param context * @return */ public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 獲取手機(jī)所有連接管理對(duì)象(包括對(duì)wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 獲取NetworkInfo對(duì)象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===狀態(tài)===" + networkInfo[i].getState()); System.out.println(i + "===類型===" + networkInfo[i].getTypeName()); // 判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)是否為連接狀態(tài) if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } }
控制臺(tái)打印出的結(jié)果:
Android 關(guān)于判斷應(yīng)用是否有網(wǎng)絡(luò)
在Android編程中不少有許多應(yīng)用需要判斷是否有網(wǎng)絡(luò)的問(wèn)題,現(xiàn)在我就來(lái)說(shuō)說(shuō)關(guān)于網(wǎng)絡(luò)的問(wèn)題吧,源碼如下:
.java
/** * 檢查當(dāng)前網(wǎng)絡(luò)是否可用 * * @param context * @return */ public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 獲取手機(jī)所有連接管理對(duì)象(包括對(duì)wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 獲取NetworkInfo對(duì)象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===狀態(tài)===" + networkInfo[i].getState()); System.out.println(i + "===類型===" + networkInfo[i].getTypeName()); // 判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)是否為連接狀態(tài) if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; }
在oncreate()方法中判斷這個(gè)方法,具體代碼如下:
.java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(isNetworkAvailable(Maintivity.this){ Toast.makeText(this, "當(dāng)前有可用網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(this,"當(dāng)前沒(méi)有網(wǎng)絡(luò)!",Toast.LENGTH_LONG).show();} }
另外,還需要添加權(quán)限
<!-- 允許應(yīng)用可以聯(lián)網(wǎng) --> <uses-permission android:name="android.permission.INTERNET" /> <!--允許應(yīng)用檢查網(wǎng)絡(luò)狀況 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
- Android判斷用戶的網(wǎng)絡(luò)類型實(shí)例講解(2/3/4G、wifi)
- Android檢查手機(jī)網(wǎng)絡(luò)狀態(tài)及網(wǎng)絡(luò)類型的方法
- Android編程獲取網(wǎng)絡(luò)時(shí)間實(shí)例分析
- Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運(yùn)營(yíng)商的方法
- Android判斷用戶2G/3G/4G移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)
- Android編程判斷網(wǎng)絡(luò)連接是否可用的方法
- Android判斷設(shè)備網(wǎng)絡(luò)連接狀態(tài)及判斷連接方式的方法
- Android中判斷網(wǎng)絡(luò)是否可用的代碼分享
- Android判斷網(wǎng)絡(luò)類型的方法(2g,3g還是wifi)
相關(guān)文章
Android ServiceManager的啟動(dòng)和工作原理
這篇文章主要介紹了Android ServiceManager的啟動(dòng)和工作原理,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下2021-03-03Android Activity啟動(dòng)模式之singleTop實(shí)例詳解
這篇文章主要介紹了Android Activity啟動(dòng)模式之singleTop,結(jié)合實(shí)例形式較為詳細(xì)的分析了singleTop模式的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01Android將camera獲取到的YuvData在jni中轉(zhuǎn)化為Mat方法
今天小編就為大家分享一篇Android將camera獲取到的YuvData在jni中轉(zhuǎn)化為Mat方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路
本文主要介紹 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路,這里詳細(xì)介紹了相關(guān)Binder的資料,幫助大家理解學(xué)習(xí)Android 源碼Binder通信機(jī)制,有興趣的小伙伴可以參考下2016-08-08Android Service判斷設(shè)備聯(lián)網(wǎng)狀態(tài)詳解
本文主要介紹Android Service判斷聯(lián)網(wǎng)狀態(tài),這里提供了相關(guān)資料并附有示例代碼,有興趣的小伙伴可以參考下,幫助開(kāi)發(fā)相關(guān)應(yīng)用功能2016-08-08