如何检查 Android 设备上的 wifi 或 3g 网络是否可用

2023-11-30

在这里,我的 Android 设备同时支持 wifi 和 3g。在特定时间,该设备上可用的网络。因为我的要求是3g可用时我必须上传少量数据。当 wifi 可用时,必须上传全部数据。所以,我必须检查连接是wifi还是3g。请帮我。提前致谢。


我用这个:

/**
 * Checks if we have a valid Internet Connection on the device.
 * @param ctx
 * @return True if device has internet
 *
 * Code from: http://www.androidsnippets.org/snippets/131/
 */
public static boolean haveInternet(Context ctx) {

    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

    if (info == null || !info.isConnected()) {
        return false;
    }
    if (info.isRoaming()) {
        // here is the roaming option you can change it if you want to
        // disable internet while roaming, just return false
        return false;
    }
    return true;
}

你还需要

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在AndroidManifest.xml中

要获取网络类型,您可以使用以下代码片段:

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile
State mobile = conMan.getNetworkInfo(0).getState();

//wifi
State wifi = conMan.getNetworkInfo(1).getState();

然后像这样使用它:

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
    //mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
    //wifi
}

要获取移动网络的类型,我会尝试TelephonyManager#getNetworkType or 网络信息#getSubtypeName

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 Android 设备上的 wifi 或 3g 网络是否可用 的相关文章

随机推荐