BroadcastReceiver获取手机网络状态
来源:互联网 发布:java版qq还能用吗 知乎 编辑:程序博客网 时间:2024/04/30 03:14
public class NetReceiver extends BroadcastReceiver {/** * 枚举网络状态 NET_NO:没有网络 NET_2G:2g网络 NET_3G:3g网络 NET_4G:4g网络 NET_WIFI:wifi * NET_UNKNOWN:未知网络 */public static enum NetState {NET_NO, NET_2G, NET_3G, NET_4G,NET_WIFI, NET_MOBILE, NET_UNKNOWN};public static List<NetEventHandle> ehList = new ArrayList<NetEventHandle>();public static interface NetEventHandle {/** * 网络状态码 * * @param netCode */void netState(NetState netCode);}@Overridepublic void onReceive(Context context, Intent intent) {// 向所有实现接口的activity传递消息for (NetEventHandle e : ehList) {e.netState(isConnected(context));}}/** * 判断当前是否网络连接 * * @param context * @return 状态码 */public NetState isConnected(Context context) {NetState stateCode = NetState.NET_NO;ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo ni = cm.getActiveNetworkInfo();if (ni != null && ni.isConnectedOrConnecting()) {switch (ni.getType()) {case ConnectivityManager.TYPE_WIFI:stateCode = NetState.NET_WIFI;break;case ConnectivityManager.TYPE_MOBILE:switch (ni.getSubtype()) {case TelephonyManager.NETWORK_TYPE_GPRS: // 联通2gcase TelephonyManager.NETWORK_TYPE_CDMA: // 电信2gcase TelephonyManager.NETWORK_TYPE_EDGE: // 移动2gcase TelephonyManager.NETWORK_TYPE_1xRTT:case TelephonyManager.NETWORK_TYPE_IDEN:stateCode = NetState.NET_2G;break;case TelephonyManager.NETWORK_TYPE_EVDO_A: // 电信3gcase TelephonyManager.NETWORK_TYPE_UMTS:case TelephonyManager.NETWORK_TYPE_EVDO_0:case TelephonyManager.NETWORK_TYPE_HSDPA:case TelephonyManager.NETWORK_TYPE_HSUPA:case TelephonyManager.NETWORK_TYPE_HSPA:case TelephonyManager.NETWORK_TYPE_EVDO_B:// case TelephonyManager.NETWORK_TYPE_EHRPD:// case TelephonyManager.NETWORK_TYPE_HSPAP:stateCode = NetState.NET_3G;break;// case TelephonyManager.NETWORK_TYPE_LTE:// stateCode = NetState.NET_4G;// break;default:stateCode = NetState.NET_MOBILE;}break;default:stateCode = NetState.NET_UNKNOWN;}}return stateCode;}}
别忘了在AndroidMinestfest.xml中静态注册:
<receiver android:name=".NetReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
0 0
- BroadcastReceiver获取手机网络状态
- 获取手机网络状态
- 获取手机网络状态
- android 获取手机网络状态
- android 获取手机网络状态
- 获取手机网络连接状态
- android 获取手机网络状态
- android--解决方案--用BroadcastReceiver监听手机网络状态变化
- 【android】解决方案--用BroadcastReceiver监听手机网络状态变化
- 获取当前网络状态/手机状态
- BroadcastReceiver 网络状态变化
- BroadcastReceiver监听网络状态
- BroadcastReceiver 判断网络状态
- android获取手机的网络状态
- android 获取手机的网络状态
- unity 获取手机的网络状态
- 获取手机网络状态之ConnectivityManager
- 关于BroadcastReceiver 监听网络状态
- 渭南代办医院诊断书
- 汉中代办医院诊断书
- POJ3904 Sky Code【容斥原理】
- 商洛代办医院诊断书
- Zigbee协议栈OSAL层API函数
- BroadcastReceiver获取手机网络状态
- 白银代办医院诊断书
- 武威代办医院诊断书
- 酒泉代办医院诊断书
- 待解决的问题
- android中SELINUX规则分析和语法简介
- 陇南代办医院诊断书
- 感觉最近老被人叉
- 银川代办医院诊断书