您好我想检查连接到网络(手机或wifi)的手机或平板电脑。
这个网络访问互联网并发送和接收数据吗?
我使用此代码:
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI")) {
if (ni.isConnected()) {
Toast.makeText(context,"WIFI CONNECTED",Toast.LENGTH_LONG).show();
Boolean m = isOnline();
Toast.makeText(context,String.valueOf(m),Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context,"WIFI NOT CONNECTED AND AVAILABLE",Toast.LENGTH_LONG).show();
}
public boolean isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException e) { e.printStackTrace(); }
catch (InterruptedException e) { e.printStackTrace(); }
return false;
}
但它总是返回false
(我在BlueStacks中测试应用程序)。
我测试stackoverflow中存在的所有代码
答案 0 :(得分:2)
首先,请尝试检查您是否真的已连接:
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
要获得连接类型,请尝试以下方法:
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
检查此图片以查看其他连接类型。
不要忘记在清单上添加此行:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
有关the training的更多信息。
有关ConnectivityManager
here的更多信息。
编辑:您还可以尝试以下内容:
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null) {
return info.isConnectedOrConnecting();
}
第二次修改:是的,您也可以采用“ping”方法。但是......我认为这不是必要的,你可以简单地尝试上面的解决方案......