mik*_*013 3 android android-manifest android-internet
我正在尝试检查是否存在互联网连接或设备是否实际连接到wifi.
注意:我不是想看看是否有互联网连接或只是连接了wifi.我想检查设备是否实际接收和发送数据包.
此代码段实际上会检查是否存在移动数据连接,或者是否启用了wifi但是没有说明连接是否已实际建立.
public boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
return false;
} else
return true;
Run Code Online (Sandbox Code Playgroud)
要么
boolean isConnected = ni != null && ni.isConnectedOrConnecting();
if(isConnected){
return true;
}
else{
Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
public boolean haveNetworkConnection(Context context) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
Run Code Online (Sandbox Code Playgroud)
以上所有代码片段仅检查是否启用了wifi或数据.它不显示连接是否已建立.如果启用了wifi或数据,它将始终返回true.
同样,我的目标是检查是否检查连接是否已建立.
任何帮助都会非常有用..提前谢谢.. :)
这个问题已得到解答.再次感谢.
感谢您的评论和回答,但我认为这个解决方案对我有用.这实际上是尝试连接到互联网并检查状态.不确定这是否是正确的方法.
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);
if(reachable){
System.out.println("Internet access");
return reachable;
}
else{
System.out.println("No Internet access");
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
希望这有助于其他观众.
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |