signalStrength.getGsmSignalStrength() is giving values without sim-card also

三世轮回 提交于 2019-12-11 17:47:56

问题


Hey I tried for signalStrength.getGsmSignalStrength() for GSM and CDMA devices but I noticed that both the devices gives strength even when sim is not inserted in device.I want to place a call or send message only if network is good how can I achieve this? And also want to know which signal strength this API returns!!... Please reply as soon as possible.

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();
        }
    }

}

回答1:


i believe this may help you to detect Sim card availability:

TelephonyManager m = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
if (m.getSimState() != TelephonyManager.SIM_STATE_ABSENT){
  // SIM card
} else {
  // No SIM card
}

moreover, you may read this




回答2:


Your phone connects to the cellular network even when you don't have a SIM inserted, provided airplane mode is off, so that emergency calls can be made. Cell operators are required by law to allow such calls. So they allow phones without SIM to register on their network and your phone goes in Emergency Calls Only mode. That's why you read signal strength values with no SIM.



来源:https://stackoverflow.com/questions/9461296/signalstrength-getgsmsignalstrength-is-giving-values-without-sim-card-also

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!