如何监控网络类型并在更改时得到通知



我正在尝试制作一个应用程序,既可以显示网络类型(2G、3G或4G)的状态,这是我使用TelephonyManager完成的,也可以在网络类型更改时通知用户。这是我遇到的问题,我如何监控网络类型并在它发生变化时得到通知?

您应该在这里找到网络更改的答案http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

编辑移动网络查看此答案。https://stackoverflow.com/a/21721139/1898809

这篇帖子:https://stackoverflow.com/a/17341777/1898809

你需要这样的东西:(记住这只适用于Android 4.2+)

    // It Only works on Android 4.2+
    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    telephonyManager.listen(new PhoneStateListener(){
        @Override
        public void onCellInfoChanged(List<CellInfo> cellInfo) {
            super.onCellInfoChanged(cellInfo);
            for (CellInfo ci : cellInfo) {
                if (ci instanceof CellInfoGsm) {
                    Log.d("TAG", "This has 2G");
                } else if (ci instanceof CellInfoLte) {
                    Log.d("TAG", "This has 4G");
                } else {
                    Log.d("TAG", "This has 3G");
                }
            }
        }

    }, PhoneStateListener.LISTEN_CELL_INFO);

您还需要在清单中获得android.permission.READ_PHONE_STATE权限。

过了一段时间,这里有一个工作代码:

onCreate:下

    TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    TelephonyMgr.listen(new TeleListener(),
            PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

作为一个类别:

public class TeleListener extends PhoneStateListener {  
    public void onDataConnectionStateChanged (int state, int networkType){
        super.onDataConnectionStateChanged(state, networkType);  
   //Whatever you wanna do  
      }  
}

当网络类型(2G、3G、4G)发生变化或连接状态(连接、断开连接等)发生变化时,触发方法onDataConnectionStateChanged(int state, int networkType)

相关内容

  • 没有找到相关文章

最新更新