Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在进行URL连接之前,如何检测用户是否开启了3G/Wifi?_Java_Android_Android Wifi - Fatal编程技术网

Java 在进行URL连接之前,如何检测用户是否开启了3G/Wifi?

Java 在进行URL连接之前,如何检测用户是否开启了3G/Wifi?,java,android,android-wifi,Java,Android,Android Wifi,如果用户没有wifi或3g连接,我不希望我的应用程序崩溃。如何在运行时在我的应用程序中捕获此信息?首先获取对ConnectionManager的引用,然后获取设备的引用。 要使用此服务,您需要访问\网络\状态权限 ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetw

如果用户没有wifi或3g连接,我不希望我的应用程序崩溃。如何在运行时在我的应用程序中捕获此信息?

首先获取对ConnectionManager的引用,然后获取设备的引用。 要使用此服务,您需要访问\网络\状态权限

    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;
        }

请参阅[如何在android中检查互联网连接?]()。