5

Wi-Fiがワイヤレスモデムに接続されている場合、インターネットカバレッジは存在するかどうかにかかわらず、常に「はい」と表示されます。インターネット接続ではなく、Wi-Fi接続のみをチェックするので、このような状況に対処するにはどうすればよいですか。

4

7 に答える 7

3

1.)uはそれを次のようにチェックできます

URL url = new URL("YOUR urlString");
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
.
.
int responseCode = conn.getResponseCode();
//if responseCode = 200 - THEn CONN is connected

また

2.)uはdisのような何かをすることができます

public static boolean isNetworkAvailable(Activity activity) {
        ConnectivityManager connectivity = (ConnectivityManager) activity
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;  //<--  --  -- Connected
                    }
                }
            }
        }
        return false;  //<--  --  -- NOT Connected
    }
于 2012-05-30T13:26:13.653 に答える
1

これを試して。

private 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;
                    Log.v("WIFI CONNECTION ", "AVAILABLE");
                } else
                {
                    Log.v("WIFI CONNECTION ", "NOT AVAILABLE");
                }
            }
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            {
                if (ni.isConnected())
                {
                    haveConnectedMobile = true;
                    Log.v("MOBILE INTERNET CONNECTION ", "AVAILABLE");
                } else
                {
                    Log.v("MOBILE INTERNET CONNECTION ", "NOT AVAILABLE");
                }
            }
        }
        return haveConnectedWifi || haveConnectedMobile;
    }

それがお役に立てば幸いです。

于 2012-05-30T14:05:01.037 に答える
1

このコードを使用する

final ConnectivityManager connectivityManager = (ConnectivityManager)context.
            getSystemService(Context.CONNECTIVITY_SERVICE);

final Network network = connectivityManager.getActiveNetwork();
final NetworkCapabilities capabilities = connectivityManager
            .getNetworkCapabilities(network);

return capabilities != null
                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
于 2016-07-25T11:21:16.403 に答える
0

これを試しましたか?

http://developer.android.com/reference/android/net/NetworkInfo.html#isConnected()

説明は言う:

ネットワーク接続が存在し、接続を確立してデータを渡すことが可能かどうかを示します。

于 2012-05-30T13:29:42.030 に答える
0

そうです、ConnectivityManagerを使用する場合は、接続(WiFi、モバイル、WiMaxなど)と接続されているかどうかの情報のみを提供します。

データ接続を確実にするには、pingを実行できます。

public static boolean ping() {

    try {
        SocketAddress addr = new InetSocketAddress("www.example.com", 80); // Set IP/Host and Port
        Socket socket = new Socket();
        //Connect socket to address, and set a time-out to 5 sec
        socket.connect(addr, 5000);
        //If network isn't conecctet then throw a IOException else socket is connected successfully
        socket.close();
        return true;
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return true;
}
于 2012-05-30T13:42:19.800 に答える
0

これを使用して、Androidのインターネット接続でwifiまたはモバイルデータの接続を確認できます

 public boolean isConnected() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean NisConnected = activeNetwork != null && activeNetwork.isConnected();
        if (NisConnected) {
            //  if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE || activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
            if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
           return true;
            } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
                return true;
            else
                return false;
        }
        return false;
    }
于 2015-06-07T05:11:41.670 に答える
0

また、このように

public static boolean isNetworkAvailable(Context context)
{
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
于 2017-02-22T13:36:57.070 に答える