嘿我为GSM和CDMA设备试过了signalStrength.getGsmSignalStrength(),但是我注意到即使sim没有插入设备,这两个设备也能提供强大的功能。我想只在网络好的情况下拨打电话或发送信息我可以做到这一点吗?并且还想知道这个API返回的信号强度!! ...请尽快回复。
public class AndroidPhoneStateListener extends PhoneStateListener {
public static int signalStrengthValue;
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
if (signalStrength.isGsm()) {
if (signalStrength.getGsmSignalStrength() != 99)
signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
else
signalStrengthValue = signalStrength.getGsmSignalStrength();
} else {
signalStrengthValue = signalStrength.getCdmaDbm();
}
}
}
答案 0 :(得分:6)
我相信这可以帮助您检测SIM卡的可用性:
TelephonyManager m = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
if (m.getSimState() != TelephonyManager.SIM_STATE_ABSENT){
// SIM card
} else {
// No SIM card
}
此外,您可以阅读this
答案 1 :(得分:2)
如果您没有插入SIM卡,即使飞机模式已关闭,您的手机也会连接到手机网络,以便拨打紧急电话。法律要求小区运营商允许此类呼叫。因此,他们允许没有SIM卡的电话在其网络上注册,而您的电话则进入紧急呼叫模式。这就是为什么你没有SIM读取信号强度值的原因。