16

デバイスで WIFI とデータ/3G の両方が有効になっていると仮定すると、ユーザーが現在 Wi-Fi 経由でインターネットを使用しているか、両方が有効になっていると仮定してデータ プランを使用しているかを確認するにはどうすればよいですか。したがって、それらが有効か無効かを確認する必要はありません。ユーザーが実際に使用しているものを検出したいと思います。

私は次のことを行ってきましたが、これが唯一の解決策ですか?

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
    String ssid = wifiInfo.getSSID();
}
4

4 に答える 4

7

次の方法を使用して、ネットワークの状態を毎回確認できます。

public static String checkNetworkStatus(final Context context) {

        String networkStatus = "";

        // Get connect mangaer
        final ConnectivityManager connMgr = (ConnectivityManager)  
                context.getSystemService(Context.CONNECTIVITY_SERVICE);

        // check for wifi
        final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        // check for mobile data
        final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if( wifi.isAvailable() ) {
            networkStatus = "wifi";
        } else if( mobile.isAvailable() ) {
            networkStatus = "mobileData";
        } else {
            networkStatus = "noNetwork";
        }

        return networkStatus;

}  // end checkNetworkStatus 

//vKj

于 2013-12-31T07:33:55.797 に答える
0
 public boolean CheckConnectivity(final Context c) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (mConnectivityManager.getActiveNetworkInfo() != null
                && mConnectivityManager.getActiveNetworkInfo().isAvailable()
                && mConnectivityManager.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            return false; // make it false
        }
    }
于 2015-12-08T06:22:00.180 に答える
0

getNetworkInfo非推奨の方法です。使用することをお勧めしますgetActiveNetworkInfo

private String checkNetworkStatus(Context context) {

    String networkStatus = "";
    final ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if( manager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI) {
        networkStatus = "wifi";
    } else if(manager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_MOBILE){
        networkStatus = "mobileData";
    } else{
        networkStatus="noNetwork";
    }
    return networkStatus;
}
于 2016-12-01T16:09:39.167 に答える