NetworkChangeReceiver.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.edufound.android.xyyf.receiver;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.net.ConnectivityManager;
  6. import android.net.NetworkInfo;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.telephony.TelephonyManager;
  10. import com.edufound.android.xyyf.base.BaseView;
  11. import com.edufound.android.xyyf.util.ContextUtil;
  12. import com.edufound.android.xyyf.util.Logger;
  13. import com.edufound.android.xyyf.util.ToastUtil;
  14. /**
  15. * Created by Candy on 2018/4/8.
  16. */
  17. public class NetworkChangeReceiver extends BroadcastReceiver {
  18. BaseView mView;
  19. final int DISCONNECT = 0x21;
  20. final int CONNECT = 0x22;
  21. String strNetworkType;
  22. public NetworkChangeReceiver(BaseView view) {
  23. mView = view;
  24. }
  25. @Override
  26. public void onReceive(Context context, Intent intent) {
  27. GetNetworkType(context);
  28. }
  29. public void GetNetworkType(Context context) {
  30. ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  31. NetworkInfo networkInfo = connectMgr.getActiveNetworkInfo();
  32. if (networkInfo != null && networkInfo.isConnected()) {
  33. if (!ContextUtil.getNetWorkState()) {
  34. handler.sendEmptyMessage(CONNECT);
  35. }
  36. ContextUtil.setmNetWorkState(true);
  37. if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
  38. strNetworkType = "WIFI";
  39. ContextUtil.setmNetWorkState(true);
  40. } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
  41. String _strSubTypeName = networkInfo.getSubtypeName();
  42. Logger.e("Network getSubtypeName : " + _strSubTypeName);
  43. int networkType = networkInfo.getSubtype();
  44. switch (networkType) {
  45. case TelephonyManager.NETWORK_TYPE_GPRS:
  46. case TelephonyManager.NETWORK_TYPE_EDGE:
  47. case TelephonyManager.NETWORK_TYPE_CDMA:
  48. case TelephonyManager.NETWORK_TYPE_1xRTT:
  49. case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
  50. strNetworkType = "2G";
  51. break;
  52. case TelephonyManager.NETWORK_TYPE_UMTS:
  53. case TelephonyManager.NETWORK_TYPE_EVDO_0:
  54. case TelephonyManager.NETWORK_TYPE_EVDO_A:
  55. case TelephonyManager.NETWORK_TYPE_HSDPA:
  56. case TelephonyManager.NETWORK_TYPE_HSUPA:
  57. case TelephonyManager.NETWORK_TYPE_HSPA:
  58. case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
  59. case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
  60. case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
  61. strNetworkType = "3G";
  62. break;
  63. case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13
  64. strNetworkType = "4G";
  65. break;
  66. }
  67. Logger.e("Network getSubtype : " + Integer.valueOf(networkType).toString());
  68. // ToastUtil.showToast("当前网络环境:" + strNetworkType);
  69. }
  70. } else {
  71. ContextUtil.setmNetWorkState(false);
  72. handler.sendEmptyMessageDelayed(DISCONNECT, 5000);
  73. strNetworkType = "-1";
  74. }
  75. Logger.e("setmNetWorkState:" + ContextUtil.getNetWorkState());
  76. Logger.e("Network Type : " + strNetworkType);
  77. }
  78. Handler handler = new Handler(new Handler.Callback() {
  79. @Override
  80. public boolean handleMessage(Message msg) {
  81. switch (msg.what) {
  82. case DISCONNECT:
  83. mView.DisconnNetWork();
  84. break;
  85. case CONNECT:
  86. handler.removeMessages(CONNECT);
  87. handler.removeMessages(DISCONNECT);
  88. mView.ConnNeWork();
  89. break;
  90. }
  91. return false;
  92. }
  93. });
  94. }