这里有检查互联网连接的代码,然后如果isconnected为false,则在allert对话框中显示一条消息。问题是如果isconnected是真的并且(我试图把if(isconnected)子句改为if(!isconnected))每个都有效。但是,当我执行show()每次冻结时,如果我在手机上放下每个网络。为什么?谢谢大家:
B=[]
for a in range(0,20):
inner=[]
for b in range (0, 10):
inner.append(tmp1[a][b] / tmp2[a])
B.append(inner)
答案 0 :(得分:1)
您不需要AsyncTask来检查互联网连接,所以请保持简单。
我认为你的onClick方法看起来像这样:
@Override
public void onClick(View v) {
if (isConnectionAvailable(context)) {
// connected
} else {
// not connected
}
};
public static boolean isConnectionAvailable(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}
不要忘记Manifest中的ACCESS_NETWORK_STATE和INTERNET权限。
答案 1 :(得分:0)
试试这个...
((Button)findViewById(R.id.listabutton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isDeviceOnline(context)){
//do something.
}else{
AlertDialog.Builder dialog= new AlertDialog.Builder(context);
dialog.setMessage("Not connected");
dialog.setTitle("Error!");
dialog.setPositiveButton(.....);
dialog.create();
dialog.show();
}
}
}
public boolean isDeviceOnline(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected();
}
是的,在清单文件中添加ACCESS_NETWORK_STATE和INTERNET权限