检查手机是否使用WIFI或Data/3G

ARM*_*DON 12 android

假设在设备上启用了WIFI和Data/3G,我如何检查用户当前是否通过wifi或数据计划使用互联网,假设它们都已启用.所以我不需要检查它们是启用还是禁用,我想检测用户实际使用的是哪一个.

我一直在做以下,这是唯一的解决方案吗?

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

Aas*_*gar 27

void chkStatus() {
    final ConnectivityManager connMgr = (ConnectivityManager)
    this.getSystemService(Context.CONNECTIVITY_SERVICE);
    final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (wifi.isConnectedOrConnecting ()) {
        Toast.makeText(this, "Wifi", Toast.LENGTH_LONG).show();
    } else if (mobile.isConnectedOrConnecting ()) {
        Toast.makeText(this, "Mobile 3G ", Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(this, "No Network ", Toast.LENGTH_LONG).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果它已被回答,请链接到问题,而不是抄袭答案.当然答案是正确的 - 毕竟你复制了它.但是,这只会在SO上创建重复项,从而降低SO的可用性. (3认同)
  • 此解决方案已弃用,请参阅 /sf/ask/2278290451/ 了解新解决方案 (2认同)

Vin*_*shi 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 
Run Code Online (Sandbox Code Playgroud)

// vKj