URL接続を作成する前に、ユーザーが3G/WiFiをオンにしているかどうかを検出する方法は?

StackOverflow https://stackoverflow.com/questions/3680830

  •  02-10-2019
  •  | 
  •  

質問

ユーザーがWiFiまたは3G接続を持っていない場合、アプリをクラッシュさせたくありません。アプリで実行時にこれをキャッチするにはどうすればよいですか?

役に立ちましたか?

解決

まず、ConnectivityManagerへの参照を取得します WiFiおよび3Gステータスを確認してください デバイスの。このサービスを使用するには、Access_Network_State許可が必要です。

    ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mWifi.isConnected() == false && mMobile.isConnected() == false) {
        showDialog(DIALOG_NETWORK_UNAVAILABLE);
    }

他のヒント

connmanager.getnetworkinfo(connectivitymanager.type_wifi)は非推奨です。

以下は、最新のAndroid SDKの改善されたソリューションです。

ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
        boolean is3gEnabled = false;
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Network[] networks = connManager.getAllNetworks();
            for(Network network: networks)
            {
                NetworkInfo info = connManager.getNetworkInfo(network);
                if(info!=null) {
                    if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                        is3gEnabled = true;
                        break;
                    }
                }
            }
        }
        else
        {
            NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if(mMobile!=null)
                is3gEnabled = true;
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top