在安卓系统中如何检查网络连接?

4

朋友们,

我正在尝试检查Android设备上的互联网连接,并使用以下代码:

final ConnectivityManager conn_manager = (ConnectivityManager) 
            this.getSystemService(Context.CONNECTIVITY_SERVICE);


            final NetworkInfo network_info = conn_manager.getActiveNetworkInfo();
            if ( network_info != null && network_info.isConnected() ) 
            {
                return true;
            }
            else
            {
                return false;
            }

但是它给我的网络/ WiFi连接,如果WiFi已连接,它会给我真实的信息,如果没有连接到互联网,它也会给我真实的信息。
有人可以指导我解决方案吗?
3个回答

12

可能是您在那里的if子句中的逻辑有问题。

我使用这个:

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

如何扩展此代码以在时间间隔内检查互联网连接? - ChrisBenyamin
监视时间间隔可能不是一个好主意,相反你应该订阅连接广播并根据其执行操作。请参考相关问题:https://dev59.com/dHA75IYBdhLWcg3wboUz#3307565 - Pentium10
我尝试使用这个,但在2.1设备上,当连接到WiFi模式时,它会报告错误,而在飞行模式下则不会。 - Navarr

0

0
使用这个方便的库:http://code.google.com/p/connectivity 您可以订阅网络状态通知,并在网络状态发生变化时获得回调。或者,您可以直接查询网络是否可用。非常简单易用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接