1

Android デバイスがインターネット接続に接続されているかどうかを確認するにはどうすればよいですか? 現在、私は以下のコードを使用しています:

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected());

ただし、上記のコードの問題は、デバイスがネットワークに接続されているかどうかのみを確認することです。インターネット接続が利用可能かどうかはチェックしません。たとえば、デバイスがインターネット アクセスのないルーターに接続されている場合でもisConnectedToNetwork、技術的にはルーター経由でネットワークに接続されているため、true が返されます。ルーターがインターネットに接続されていないだけです。

私が見た提案は、ダウンする可能性が非常に低い Web サイトへの接続を試みることです。この例は、www.google.com です。ただし、これはこれに対する適切な解決策ではないと思います。まず、ユーザーが GPRS を使用していて、インターネットの使用に対して KB ごとに課金されている場合、ユーザーはこれに対して追加料金を負担することになります。第二に、このようなサード パーティの Web サイトを使用することは倫理的ではないと思います。これが本当にインターネット接続を確認する唯一の方法ですか、それとも別の解決策を提案できますか? 彼らの同意なしにそのようにGoogleに接続することは本当に大丈夫ですか? デバイスがインターネットに接続されているかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

2
    public boolean isOnline(Context context) {
    try {
        ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); 
        if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
            URL url = new URL("http://www.ripansekhon.blogspot.com");
            HttpURLConnection urlc = (HttpURLConnection) url .openConnection();
            urlc.setRequestProperty("User-Agent", "test");
            urlc.setRequestProperty("Connection", "close"); 
            urlc.setConnectTimeout(1000); // mTimeout is in seconds
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            } else {
                return false;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

この機能をチェックしてください。インターネットが機能しているかどうかを確認するには、ウェブサイトが開いているかどうかを意味します

于 2012-05-16T11:28:10.637 に答える
1

使用するConnectivityManager.TYPE_WIFI

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected());
于 2012-04-11T04:45:37.217 に答える
0
public  boolean checkInternetConnection() {

    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        Log.d("Internet Connection  Present","");
        isFound=true;
    } else {
        Log.d("Internet Connection Not Present","");
        isFound= false;
    }
    return isFound;
}
于 2012-04-11T12:35:22.090 に答える