123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package com.edufound.mobile.receiver;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
- import android.os.Handler;
- import android.os.Message;
- import android.telephony.TelephonyManager;
- import com.edufound.mobile.base.BaseView;
- import com.edufound.mobile.util.ContextUtil;
- import com.edufound.mobile.util.Logger;
- import com.edufound.mobile.util.ToastUtil;
- /**
- * Created by Candy on 2018/4/8.
- */
- public class NetworkChangeReceiver extends BroadcastReceiver {
- BaseView mView;
- final int DISCONNECT = 0x21;
- final int CONNECT = 0x22;
- String strNetworkType;
- public NetworkChangeReceiver(BaseView view) {
- mView = view;
- }
- @Override
- public void onReceive(Context context, Intent intent) {
- GetNetworkType(context);
- }
- public void GetNetworkType(Context context) {
- ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo networkInfo = connectMgr.getActiveNetworkInfo();
- if (networkInfo != null && networkInfo.isConnected()) {
- handler.sendEmptyMessage(CONNECT);
- if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
- strNetworkType = "WIFI";
- ContextUtil.setmNetWorkState(true);
- } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
- String _strSubTypeName = networkInfo.getSubtypeName();
- Logger.e("Network getSubtypeName : " + _strSubTypeName);
- int networkType = networkInfo.getSubtype();
- switch (networkType) {
- case TelephonyManager.NETWORK_TYPE_GPRS:
- case TelephonyManager.NETWORK_TYPE_EDGE:
- case TelephonyManager.NETWORK_TYPE_CDMA:
- case TelephonyManager.NETWORK_TYPE_1xRTT:
- case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
- strNetworkType = "2G";
- break;
- case TelephonyManager.NETWORK_TYPE_UMTS:
- case TelephonyManager.NETWORK_TYPE_EVDO_0:
- case TelephonyManager.NETWORK_TYPE_EVDO_A:
- case TelephonyManager.NETWORK_TYPE_HSDPA:
- case TelephonyManager.NETWORK_TYPE_HSUPA:
- case TelephonyManager.NETWORK_TYPE_HSPA:
- case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
- case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
- case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
- strNetworkType = "3G";
- break;
- case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13
- strNetworkType = "4G";
- break;
- }
- Logger.e("Network getSubtype : " + Integer.valueOf(networkType).toString());
- ToastUtil.showToast("当前网络环境:" + strNetworkType);
- ContextUtil.setmNetWorkState(true);
- }
- } else {
- ContextUtil.setmNetWorkState(false);
- strNetworkType = "-1";
- handler.sendEmptyMessageDelayed(DISCONNECT, 2000);
- }
- Logger.e("Network Type : " + strNetworkType);
- }
- Handler handler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case DISCONNECT:
- mView.DisconnNetWork();
- break;
- case CONNECT:
- handler.removeMessages(DISCONNECT);
- mView.ConnNeWork();
- break;
- }
- return false;
- }
- });
- }
|