我试图在Android中获取互联网连接状态,但我无法做到正确

时间:2017-06-12 18:28:47

标签: android

我已经在这里看到了一些关于这个问题的解决方案,但是当我在Android模拟器中尝试禁用互联网时,我的应用程序崩溃了。 这是我尝试过的代码:

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

    if(cm.getActiveNetworkInfo() != null)connect=true;
    if(connect){

            new AsyncTask<URL,Integer, Long>() {
                @Override
                protected Long doInBackground(URL... params) {
                    try {
                        InetAddress ipAddr = InetAddress.getByName("http://www.google.com "); 
                        if (ipAddr.equals(""))connect=false;
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    }

                    return null;
                }

所以布尔变量&#39; connect&#39;在我的笔记本电脑中禁用Internet时应该是假的,但它总是如此。 顺便说一下,这段代码在我的onResume方法中

1 个答案:

答案 0 :(得分:0)

您的问题是您正在尝试更改最终变量connect。当您在匿名类中使用变量时,它会自动变为最终变量,因此您无法对其进行更改。您应该从任务中返回boolean,然后将其分配给connect

AsyncTask mTask = new AsyncTask<URL,Integer, Boolean>() {
                @Override
                protected Long doInBackground(URL... params) {
                    InetAddress ipAddr = new String();
                    try {
                        InetAddress ipAddr = InetAddress.getByName("http://www.google.com "); 

                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    }

                return ipAddr.equals("");
            }
}

然后得到结果:

mTask.execute();
connect = mTask.get();