我已经在这里看到了一些关于这个问题的解决方案,但是当我在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方法中
答案 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();