在开发过程中,尤其是在开发网络应用的时候,时常要判断手机的联网状态,及时的给用户友善的提示。我们登录market,在网络断开的时候会及时的弹出警告窗口,避免用户盲目的等待。

这样的判断要贯穿在整个应用当中,在用户切换Activity,或者是后台service运行的时候都可能要用到。所以我们可以将判断的逻辑封装成一个方法,让其他Activity/service公用。


1. public static boolean isNetworkAvailable( Activity mActivity ) {  
2. Context context = mActivity.getApplicationContext();
3. ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
4. if (connectivity == null) {
5. return false;
6. } else {
7. NetworkInfo[] info = connectivity.getAllNetworkInfo();
8. if (info != null) {
9. for (int i = 0; i < info.length; i++) {
10. if (info[i].getState() == NetworkInfo.State.CONNECTED) {
11. return true;
12. }
13. }
14. }
15. }
16. return false;
17. }
18.
19. /**
20. * 检测网络是否存在
21. */
22. public static void HttpTest(final Activity mActivity)
23. {
24. if( !isNetworkAvailable( mActivity) ){
25. AlertDialog.Builder builders = new AlertDialog.Builder(mActivity);
26. builders.setTitle("抱歉,暂时无法处理您的请求");
27. LayoutInflater _inflater = LayoutInflater.from(mActivity);
28. View convertView = _inflater.inflate(R.layout.error,null);
29. builders.setView(convertView);
30. builders.setPositiveButton("确定", new DialogInterface.OnClickListener(){
31. public void onClick(DialogInterface dialog, int which)
32. {
33. mActivity.finish();
34. }
35. });
36. builders.show();
37. }
38. }

这样我们在Activity的onCreate的时候或者onResume 的时候就只需要 调用这个方法。将当前的Activity.this当做参数传进去即可。