当前位置: 代码迷 >> Android >> Android判断当前网络是不是可用-示例代码
  详细解决方案

Android判断当前网络是不是可用-示例代码

热度:21   发布时间:2016-04-28 05:32:12.0
Android判断当前网络是否可用--示例代码
源码打印?
  1. <strong>public?class?NetworkDetector?{??
  2. ???
  3. ????public?static?boolean?detect(Activity?act)?{??
  4. ????????
  5. ???????ConnectivityManager?manager?=?(ConnectivityManager)?act??
  6. ??????????????.getApplicationContext().getSystemService(??
  7. ?????????????????????Context.CONNECTIVITY_SERVICE);??
  8. ????????
  9. ???????if?(manager?==?null)?{??
  10. ???????????return?false;??
  11. ???????}??
  12. ????????
  13. ???????NetworkInfo?networkinfo?=?manager.getActiveNetworkInfo();??
  14. ????????
  15. ???????if?(networkinfo?==?null?||?!networkinfo.isAvailable())?{??
  16. ???????????return?false;??
  17. ???????}??
  18. ???
  19. ???????return?true;??
  20. ????}??
  21. }</strong>??

?

?

?

这个类只有一个静态方法,用来检测当前系统的网络是否可用。如果可用,返回true

还要进一步说明的是,NetworkInfo类中有一个方法getType(),这个方法可以用来判断当前可用的网络是wifi,还是mobile等等。

?

再来看使用的例子。

?

?

源码打印?
  1. boolean?networkState?=?NetworkDetector.detect(XXXActivity.this);??
  2. if?(!networkState)?{??
  3. ????DialogUtil.openMsgDialog(XXXActivity.this,??
  4. ???????????android.R.drawable.ic_dialog_info,??
  5. ???????????“网络不可用,是否现在设置网络?”,?android.R.string.ok,??
  6. ???????????android.R.string.cancel,??
  7. ???????????new?DialogInterface.OnClickListener()?{??
  8. ??????????????@Override??
  9. ??????????????public?void?onClick(DialogInterface?dialog,?int?which)?{??
  10. ??????????????????startActivityForResult(new?Intent(??
  11. ?????????????????????????ACTION_WIRELESS_SETTINGS),?0);??
  12. ??????????????}??
  13. ???????????},?new?DialogInterface.OnClickListener()?{??
  14. ??????????????@Override??
  15. ??????????????public?void?onClick(DialogInterface?dialog,?int?which)?{??
  16. ??????????????????dialog.cancel();??
  17. ??????????????}??
  18. ???????????}).show();??
  19. }??

?

?

?

其中XXXActivity是我自己的Activity类,DialogUtil是我自己定义的Dialog应用类。这里的代码片段,是在判断没有网络的情况下,弹出dialog,提示用户是否进入系统的网络设置界面。

?

因为以上代码用到了权限,需要在AndroidManifest文件中加入如下权限代码:

????<uses-permission

???????android:name="android.permission.ACCESS_NETWORK_STATE"?/>

  相关解决方案