我希望能够进行一项测试以验证互联网连接,我不想检查网络状态,因为它仅检测我是否在设备上激活了互联网,而我想要检查是否可以连接到互联网。类似于ping的东西。
我希望能够进行一项测试以验证互联网连接,我不想检查网络状态,因为它仅检测我是否在设备上激活了互联网,而我想要检查是否可以连接到互联网。类似于ping的东西。
请尝试以下方法:
public boolean checkOnlineState() {
ConnectivityManager CManager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo NInfo = CManager.getActiveNetworkInfo();
if (NInfo != null && NInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
不要忘记访问权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
否则if (InetAddress.getByName("www.xy.com").isReachable(timeout))
{ }
else
{ }
它对我有效:
验证网络可用性:
private Boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
验证互联网访问:
public Boolean isOnline() {
try {
Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal==0);
return reachable;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
boolean flag=false;
ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
flag=true;
}
}
if(flag==true)
{
Log.e("TAG","Internet Is Connected");
}
else
{
Log.e("TAG","Internet Is Not Connected");
}
getAllNetworkInfo()
需要ACCESS_NETWORK_STATE权限。 - Lorne Laliberte