首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Internet非网络测试

Internet非网络测试
EN

Stack Overflow用户
提问于 2014-07-18 18:59:14
回答 1查看 75关注 0票数 0

通常,在构建需要API调用等的android应用程序时,在进行这样的调用之前,我会检查NetworkAvailability:

代码语言:javascript
复制
    public boolean networkIsAvailable() {

        boolean result = false;
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        if (activeNetworkInfo != null) {

            if (activeNetworkInfo.isConnected()) {
                result = true;

            }
        }
        return result;
    }

很简单..。但是,当用户使用的设备没有移动连接,连接到Wifi网络,但Wifi网络没有互联网接入时,会发生什么情况。

除了捕捉java.net.UnknownHostException以测试实际的互联网访问之外,还有其他选项吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-18 19:07:55

你可以用这个:

代码语言:javascript
复制
public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500); 

            urlc.connect();
            return (urlc.getResponseCode() == 200);
       } catch (IOException e) {
            Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
        Log.d(LOG_TAG, "No network available!");
    }
    return false;
}

请记住:“正如Tony在下面的评论中所指出的,确保您没有在主线程上运行这段代码,否则您将得到一个NetworkOnMainThread异常(在Android3.0或更高版本中)。使用AsyncTask或Runnable代替。”

来源:Detect if Android device has Internet connection

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24831989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档