0

在我的应用程序中,当应用程序首次启动时,在我的初始屏幕期间,我正在检查网络连接。如果存在网络连接,我将通过调用以下方法进入 Internet 连接。

但是,我故意手动禁用我的互联网连接(我连接到路由器,但无法在我的浏览器上输入网页),但下面的方法总是返回我 -200 - 这对于互联网连接来说是正确的。

public boolean hasActiveInternetConnection()
{
    try
    {
        HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
        urlc.setRequestProperty("User-Agent", "Test");
        urlc.setRequestProperty("Connection", "close");
        urlc.setConnectTimeout(3000);
        urlc.setReadTimeout(4000);
        urlc.connect();
        Log.i("Splash", Integer.toString(urlc.getResponseCode()));
        return (urlc.getResponseCode() == 200);
    } catch (IOException e)
    {
        return (false);
    }
}
4

2 回答 2

1

尝试在 openConnection() 之前包含此代码

if (android.os.Build.VERSION.SDK_INT > 9) {
                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                    StrictMode.setThreadPolicy(policy);
                }
于 2013-03-13T10:15:27.960 回答
0

您可以使用此功能检查互联网连接:

    public boolean isInternetConnection() {
    ConnectivityManager cn = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo nf = cn.getActiveNetworkInfo();
    if (nf != null && nf.isConnected() == true)
        return true;
    else
        return false;
}

您需要为此添加清单权限:

    <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-03-07T10:51:31.473 回答