NetworkChangeReceiver.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.edufound.mobile.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.mobile.base.BaseView;
  11. import com.edufound.mobile.util.ContextUtil;
  12. import com.edufound.mobile.util.Logger;
  13. import com.edufound.mobile.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. handler.sendEmptyMessage(CONNECT);
  34. if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
  35. strNetworkType = "WIFI";
  36. ContextUtil.setmNetWorkState(true);
  37. } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
  38. String _strSubTypeName = networkInfo.getSubtypeName();
  39. Logger.e("Network getSubtypeName : " + _strSubTypeName);
  40. int networkType = networkInfo.getSubtype();
  41. switch (networkType) {
  42. case TelephonyManager.NETWORK_TYPE_GPRS:
  43. case TelephonyManager.NETWORK_TYPE_EDGE:
  44. case TelephonyManager.NETWORK_TYPE_CDMA:
  45. case TelephonyManager.NETWORK_TYPE_1xRTT:
  46. case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
  47. strNetworkType = "2G";
  48. break;
  49. case TelephonyManager.NETWORK_TYPE_UMTS:
  50. case TelephonyManager.NETWORK_TYPE_EVDO_0:
  51. case TelephonyManager.NETWORK_TYPE_EVDO_A:
  52. case TelephonyManager.NETWORK_TYPE_HSDPA:
  53. case TelephonyManager.NETWORK_TYPE_HSUPA:
  54. case TelephonyManager.NETWORK_TYPE_HSPA:
  55. case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
  56. case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
  57. case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
  58. strNetworkType = "3G";
  59. break;
  60. case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13
  61. strNetworkType = "4G";
  62. break;
  63. }
  64. Logger.e("Network getSubtype : " + Integer.valueOf(networkType).toString());
  65. ToastUtil.showToast("当前网络环境:" + strNetworkType);
  66. ContextUtil.setmNetWorkState(true);
  67. }
  68. } else {
  69. ContextUtil.setmNetWorkState(false);
  70. strNetworkType = "-1";
  71. handler.sendEmptyMessageDelayed(DISCONNECT, 2000);
  72. }
  73. Logger.e("Network Type : " + strNetworkType);
  74. }
  75. Handler handler = new Handler(new Handler.Callback() {
  76. @Override
  77. public boolean handleMessage(Message msg) {
  78. switch (msg.what) {
  79. case DISCONNECT:
  80. mView.DisconnNetWork();
  81. break;
  82. case CONNECT:
  83. handler.removeMessages(DISCONNECT);
  84. mView.ConnNeWork();
  85. break;
  86. }
  87. return false;
  88. }
  89. });
  90. }