6

如果用户没有 wifi 或 3g 连接,我不希望我的应用程序崩溃。如何在我的应用程序运行时捕捉到这个?

4

2 回答 2

7

首先获取对 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);
    }
于 2010-09-10T00:00:39.053 回答
1

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;
        }
于 2017-04-22T21:14:30.300 回答