Android中判斷當前網絡是否可用
應用場景:實現判斷當前網絡是否可用
當前有可用網絡,如下圖:
當前沒有可用網絡,如下圖:
實現步驟:
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當前網絡狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
4、在AndroidManifest.xml中添加訪問當前網絡狀態權限
代碼如下:
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(), "當前有可用網絡!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "當前沒有可用網絡!", Toast.LENGTH_LONG).show();
}
}
/**
* 檢查當前網絡是否可用
*
* @param context
* @return
*/
public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對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 + "===狀態===" + networkInfo[i].getState());
System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
// 判斷當前網絡狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}
}
控制臺打印出的結果:
Android 關于判斷應用是否有網絡
在Android編程中不少有許多應用需要判斷是否有網絡的問題,現在我就來說說關于網絡的問題吧,源碼如下:
.java
/**
* 檢查當前網絡是否可用
*
* @param context
* @return
*/
public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對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 + "===狀態===" + networkInfo[i].getState());
System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
// 判斷當前網絡狀態是否為連接狀態
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, "當前有可用網絡!", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this,"當前沒有網絡!",Toast.LENGTH_LONG).show();}
}
另外,還需要添加權限