在Android中检测有限的网络连接?

Mic*_*evy 5 networking android connectivity wifi

有关如何在Android中检测网络连接的问题有很多./sf/answers/296731361/提供了非常详细的答案,/sf/answers/598424851/显示了识别连接到的网络类型的方法.

我们使用类似于以下代码的代码检测网络连接:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Run Code Online (Sandbox Code Playgroud)

这使我们可以警告用户是否处于脱机状态.但是,它无法帮助我们确定用户是否具有有限的连接.连接有限的条件导致用户抱怨.这些包括:

  1. 用户连接到家庭wifi网络,但电缆调制解调器或Internet服务不可用.

  2. 用户在酒店或咖啡店中成功连接到wifi网络,但网络要求他们在获得完全网络访问权限之前登录或同意服务条款.

在这两种情况下,我们的isNetworkAvailable()测试返回true.操作系统告诉我们我们已连接到网络.但是,用户没有可用的Internet连接.

有没有一种好方法可以确定用户是否具有完全正常运行的网络连接?

我正在考虑调用轻量级Web服务来验证其连接,并在应用程序未从服务获得有效返回时警告用户.这有点矫枉过正吗?还是让其他人不得不采用类似的技巧?

Com*_*are 8

有没有一种好方法可以确定用户是否具有完全正常运行的网络连接?

尝试从某个地方下载一些东西.理想情况下,"某处"是您自己的服务器,用于测试设备与服务器之间的连接.

唉,没有doesTehConnexionSuck()iCanHazBandwidth()方法ConnectivityManager.:-)

这有点矫枉过正吗?

本着"金发姑娘和三只熊"的精神,我将其描述为justrightkill.

我们也必须在Web应用程序中执行相同类型的恶作剧.