Android網(wǎng)絡(luò)判斷知識小結(jié)
Android中判斷當(dāng)前網(wǎng)絡(luò)是否可用
應(yīng)用場景:實現(xiàn)判斷當(dāng)前網(wǎng)絡(luò)是否可用
當(dāng)前有可用網(wǎng)絡(luò),如下圖:

當(dāng)前沒有可用網(wǎng)絡(luò),如下圖:

實現(xiàn)步驟:
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext(); // 獲取手機(jī)所有連接管理對象(包括對wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象 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中添加訪問當(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)前沒有可用網(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ī)所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null)
{
return false;
}
else
{
// 獲取NetworkInfo對象
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;
}
}
控制臺打印出的結(jié)果:

Android 關(guān)于判斷應(yīng)用是否有網(wǎng)絡(luò)
在Android編程中不少有許多應(yīng)用需要判斷是否有網(wǎng)絡(luò)的問題,現(xiàn)在我就來說說關(guān)于網(wǎng)絡(luò)的問題吧,源碼如下:
.java
/**
* 檢查當(dāng)前網(wǎng)絡(luò)是否可用
*
* @param context
* @return
*/
public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機(jī)所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null)
{
return false;
}
else
{
// 獲取NetworkInfo對象
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()方法中判斷這個方法,具體代碼如下:
.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)前沒有網(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ò)類型實例講解(2/3/4G、wifi)
- Android檢查手機(jī)網(wǎng)絡(luò)狀態(tài)及網(wǎng)絡(luò)類型的方法
- Android編程獲取網(wǎng)絡(luò)時間實例分析
- Android編程獲取網(wǎng)絡(luò)連接方式及判斷手機(jī)卡所屬運營商的方法
- Android判斷用戶2G/3G/4G移動數(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開發(fā)必備知識 為什么說Kotlin值得一試
為什么說值得一試,這篇文章主要為大家詳細(xì)介紹了Android開發(fā)必備知識,Kotlin的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Android13實時刷新頻率的實現(xiàn)代碼(完整代碼)
文章介紹了Android 13中如何通過設(shè)置開發(fā)者選項顯示屏幕刷新頻率,具體涉及到Settings應(yīng)用中的代碼和SurfaceFlinger服務(wù)的實現(xiàn),感興趣的朋友一起看看吧2025-01-01
Mac中配置gradle環(huán)境及使用android studio打包jar包與arr包的方法
這篇文章主要給大家介紹了關(guān)于在Mac中配置gradle環(huán)境,以及使用android studio打包jar包與arr包的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01

