我正在进行一个现场项目.当用户点击应用程序时.出现欢迎屏幕(该屏幕上有一个网络视图).如果互联网未连接,则应用程序崩溃.基本上,我的问题是以编程方式检查移动设备是否连接到互联网.如果没有,则不要将数据从webservice获取到webview,并显示一个对话框,显示“检查您的互联网连接”
在进行研究的同时,我发现了许多事情,我已经尝试实现了这一点.但是,它不符合我的要求
我的代码是
public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnectedOrConnecting()) { return true; } else { Description.setVisibility(View.INVISIBLE); new AlertDialog.Builder(WelcomePage.this) .setTitle(getResources().getString(R.string.app_name)) .setMessage( getResources().getString( R.string.internet_error)) .setPositiveButton("OK",null).show(); } return false; }
我在AsyncTask的doInBackground()中调用此函数
请帮忙!
解决方法
你可以结帐这个图书馆:
https://github.com/novoda/merlin
您只需实现可连接,当网络出现故障或出现时您将收到回叫.
因此,您可以在此场景中显示对话框.
您还可以查询库的当前状态,并选择不执行您的网络任务
创建Merlin(使用Merlin.Builder())
merlin = new Merlin.Builder().withConnectableCallbacks().build(context);
绑定并解除您的活动中的服务
@Override protected void onResume() { super.onResume(); merlin.bind(); } @Override protected void onPause() { super.onPause(); merlin.unbind(); }
注册回调
merlin.registerConnectable(new Connectable() { @Override public void onConnect() { // Do something! } });
演示中的MerlinActivity显示了一种从您的主要应用程序代码中消除Merlin的简单方法.