Android studio仿真器连接状态

时间:2017-11-21 13:46:34

标签: java android

我有一种检测连接状态的方法

boolean isInternetAvailable(WebView view) {
    Boolean connected = false;

    try {
        ConnectivityManager connectivityManager = (ConnectivityManager) view.getContext()
                .getSystemService(view.getContext().CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        connected = networkInfo != null && networkInfo.isAvailable() &&
                networkInfo.isConnected();

        Log.d("available", Boolean.toString(networkInfo.isAvailable()));
        Log.d("connected", Boolean.toString(networkInfo.isConnected()));
        Log.d("compare", Boolean.toString(networkInfo.getState() == NetworkInfo.State.CONNECTED));

        return connected;

    } catch (Exception e) {

    }

    return connected;
}

但是当我从计算机上断开所有互联网电缆,并且我无法实际加载任何页面时,模拟器仍然会认为他连接的是什么并返回

  11-21 13:43:22.103 20824-20824/lt.example.app D/available: true
  11-21 13:43:22.103 20824-20824/lt.example.app D/connected: true
  11-21 13:43:22.103 20824-20824/lt.example.app D/compare: true

到控制台,这个方法在WebViewClient中使用,在使用WebView时检测连接,可以是什么?

2 个答案:

答案 0 :(得分:2)

问题是,您的模拟器确实不关心您计算机上的实际连接状态。您可能需要在模拟器上启用/禁用飞行模式以获得正确的结果。

只要您的模拟器启用了wifi /数据,即使您无法访问互联网,它也会告诉您是的,我已经连接

如果您想检查有效连接,请参阅:Android check internet connectionisInternetAvailable()

答案 1 :(得分:0)

尝试创建新对象:

boolean isInternetAvailable(WebView view) {
Boolean connected = false;

try {
    ConnectivityManager connectivityManager = (ConnectivityManager) view.getContext()
            .getSystemService(view.getContext().CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = new NetworkInfo();
    networkInfo=connectivityManager.getActiveNetworkInfo();
    connected = networkInfo != null && networkInfo.isAvailable() &&
            networkInfo.isConnected();

    Log.d("available", Boolean.toString(networkInfo.isAvailable()));
    Log.d("connected", Boolean.toString(networkInfo.isConnected()));
    Log.d("compare", Boolean.toString(networkInfo.getState() == NetworkInfo.State.CONNECTED));

    return connected;

} catch (Exception e) {

}

return connected;

}