Android – 如果未连接,则以编程方式检查互联网连接并显示对话框

前端之家收集整理的这篇文章主要介绍了Android – 如果未连接,则以编程方式检查互联网连接并显示对话框前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在进行一个现场项目.当用户点击应用程序时.出现欢迎屏幕(该屏幕上有一个网络视图).如果互联网未连接,则应用程序崩溃.基本上,我的问题是以编程方式检查移动设备是否连接到互联网.如果没有,则不要将数据从webservice获取到webview,并显示一个对话框,显示“检查您的互联网连接”

在进行研究的同时,我发现了许多事情,我已经尝试实现了这一点.但是,它不符合我的要求

我的代码

  1. public boolean isOnline() {
  2. ConnectivityManager cm =
  3. (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  4. NetworkInfo netInfo = cm.getActiveNetworkInfo();
  5. if (netInfo != null && netInfo.isConnectedOrConnecting()) {
  6. return true;
  7. }
  8. else
  9. {
  10. Description.setVisibility(View.INVISIBLE);
  11. new AlertDialog.Builder(WelcomePage.this)
  12. .setTitle(getResources().getString(R.string.app_name))
  13. .setMessage(
  14. getResources().getString(
  15. R.string.internet_error))
  16. .setPositiveButton("OK",null).show();
  17. }
  18. return false;
  19. }

我在AsyncTask的doInBackground()中调用函数

请帮忙!

解决方法

你可以结帐这个图书馆:

https://github.com/novoda/merlin

您只需实现可连接,当网络出现故障或出现时您将收到回叫.

因此,您可以在此场景中显示对话框.

您还可以查询库的当前状态,并选择不执行您的网络任务

创建Merlin(使用Merlin.Builder())

  1. merlin = new Merlin.Builder().withConnectableCallbacks().build(context);

绑定并解除您的活动中的服务

  1. @Override
  2. protected void onResume() {
  3. super.onResume();
  4. merlin.bind();
  5. }
  6.  
  7. @Override
  8. protected void onPause() {
  9. super.onPause();
  10. merlin.unbind();
  11. }

注册回调

  1. merlin.registerConnectable(new Connectable() {
  2. @Override
  3. public void onConnect() {
  4. // Do something!
  5. }
  6. });

演示中的MerlinActivity显示了一种从您的主要应用程序代码中消除Merlin的简单方法.

猜你在找的Android相关文章