2

嗨,我想检查手机或平板电脑何时连接到网络(手机或 wifi)。

此网络是否可以访问 Internet 并发送和接收数据?

我使用这个代码:

    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中存在的所有代码

4

1 回答 1

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" />

有关培训的更多信息。

更多信息在ConnectivityManager 这里


编辑:你也可以尝试类似:

ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();

if (info != null) {
    return info.isConnectedOrConnecting();
}

第二次编辑:是的,你也可以做你的“ping”方法。但是......我认为这不是真的有必要,你可以简单地尝试上面的解决方案......

于 2015-08-27T16:35:03.033 回答