网络工具类
2016-05-26 13:36
369 查看
import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.provider.Settings; import android.util.Log; /** * Created by chao0 on 2016/3/2. */ /** * 基于静态内部类实现的单例,保证线程安全的网络信息工具类 <per> 使用该工具类之前,记得在AndroidManifest.xml添加权限许可 <xmp> * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> * </xmp> </per> * 安卓判断网络状态,只需要在相应的Activity的相关方法(onCreat/onResum)调用一行代码即可 * NetWorkUtils.getInstance(getActivity()).validateNetWork(); */ public class ToolNetWork { /** 网络连接方式 CMWAP*/ private static final String NETWORK_CMWAP="CMWAP"; /** 网络连接方式 CMNET*/ private static final String NETWORK_CMNET="CMNET"; /** 网络连接方式 WIFI*/ private static final String NETWORK_WIFI="WIFI"; private static final String TAG ="ToolNetWork" ; private static NetworkInfo networkInfo; private Context contxt; private ToolNetWork() { } public ToolNetWork getToolNetWork(Context context){ this.contxt=context; return this; } /** 判断网络是否可用 * return 是/否 * */ public boolean isAvailable(){ ConnectivityManager manager= (ConnectivityManager) contxt.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (manager==null){ return false; } networkInfo=manager.getActiveNetworkInfo(); if (networkInfo==null||networkInfo.isAvailable()){ return false; } return true; } /** *判断网络连接是否可用 * return 是/否 * */ public boolean isConnected(){ if (!isAvailable()){ return false; } if (networkInfo.isConnected()){ return false; } return true; } // 检查当前环境网络是否可用,不可用跳转至开启网络界面,不设置网络强制关闭当前Activity public void validateNetWork(){ if (!isConnected()){ AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(contxt); dialogBuilder.setTitle("网络设置").setMessage("当前网络不可用,是否现在设置网络").setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ((Activity)contxt).startActivityForResult(new Intent(Settings.ACTION_SETTINGS),which); } }).setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).create().show(); } } /** * 获取网络连接信息</br> 无网络:</br> WIFI网络:WIFI</br> WAP网络:CMWAP</br> * NET网络:CMNET</br> * * @return */ public String getNetWorkType(){ if (isConnected()){ int type=networkInfo.getType(); if (ConnectivityManager.TYPE_MOBILE==type){ Log.i(TAG, "networkInfo.getExtraInfo()-->" + networkInfo.getExtraInfo()); if (NETWORK_CMNET.equals(networkInfo.getExtraInfo().toLowerCase())){ return NETWORK_CMNET; }else{ return NETWORK_CMWAP; } }else if (ConnectivityManager.TYPE_WIFI==type){ return NETWORK_WIFI; } } return null; } private static class SingletonHolder{ private static ToolNetWork toolNetWork=new ToolNetWork(); } }
相关文章推荐
- Andriod开发 网络状态改变监听(这样说可能不太合理)
- TCP沾包解包(2)
- Linux下使用iptables禁止指定IP地址的网络连接
- http长连接
- erlang http post and get 请求
- CSS---网络编程
- CSS---网络编程
- HTTP长连接实现“服务器推”的技术快速入门及演示示例
- 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?
- 斯坦福CS231n课程: 视觉识别中的卷积神经网络 Convolutional Neural Networks for Visual Recognition
- URLConnection的连接、超时、关闭用法总结
- 网络流量监控工具----iftop
- objective-c - 基础篇 - 数据库网络 -- 使用NSURLSession进行POST请求的网络数据
- http://www.blogjava.net/xylz/archive/2010/07/08/325587.html
- android api23 抛弃了httpClient,许多基于httpClient第三方库怎么办?
- https 出现host name not match 问题
- BP神经网络
- C/C++ 网络库介绍
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- HttpClient 传输xml字符串