1

我在互联网上找不到任何有用的教程,也找不到开发者网站上的文档。

在我的应用程序中,我正在使用 HttpPost 连接到 Web 服务器,当没有 Internet连接但wifi连接时,它会显示白屏,并且在 10-15 秒后出现“UnknownHostException”。

我抓住了这个异常并做了吐司

Unable to connect, check your internet connection.

并关闭活动(或应用程序,因为我在第一个活动上使用完成())。

wifi本身关闭时,我会立即吐司“

You need internet connection to use this Application

但第一种情况很烦人。花 10-15 秒的时间,然后展示吐司。

所以我使用了 HttpParameters并添加了一个5 sec ConnectionTimeout参数。

但应用程序的工作方式与以前相同(此参数无效)。

如果我点击 ConnectionTime(超过 5 秒),我如何跟踪。这样我就可以像吐司一样

Slow internet connection

此外,当wifi打开但没有互联网时,为什么互联网连接检查不起作用

这是我在启动应用程序时检查的内容:

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

if (isOnline(cm, this, SignUpActivity.this)){
//continue
}

public static boolean isOnline(ConnectivityManager cm, Context c, Activity a) {

    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }

    Toast.makeText(c, "You need internet access to run this application",
            Toast.LENGTH_SHORT).show();
    a.finish();
    return false;
}

我只检查设备的 wifi 是否打开。如果是这样,我如何检查我是否有互联网连接,而不仅仅是 wifi

谢谢你

4

1 回答 1

1

至于第一个问题,请尝试使用SocketTimeout代替。

至于第二个问题,线

NetworkInfo netInfo = cm.getActiveNetworkInfo();

只会获得 Wi-fi 状态(即手机 wifi 天线已打开),但不会获得实际连接。该函数立即返回,因此如果 wifi 关闭,您无需进一步检查连接即可敬酒。但是当打开 wi-fi 时,你应该继续检查你的服务器的实际可达性,比如

InetAddress.getByName(host).isReachable(timeOut)
于 2012-09-28T09:03:08.290 回答