我试图创建一个应用程序来显示我使用TelephonyManager完成的网络类型(2G,3G或4G)的状态,并在网络类型发生变化时通知用户。 这是我遇到问题的部分,如何监控网络类型并在其发生变化时收到通知?
答案 0 :(得分:1)
您应该在此处找到有关网络更改的答案http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
移动网络的EDIT查看此答案。https://stackoverflow.com/a/21721139/1898809
答案 1 :(得分:0)
你需要这样的东西:(记住这只适用于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
权限。
答案 2 :(得分:0)
过了一段时间,这是一个有效的代码:
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)
被触发