电话 phone 状态比较不正确?

Telephony phone state not comparing correctly?

在 if 语句中将 TelephonyManager.EXTRA_STATETelephonyManager.EXTRA_STATE_RINGING 进行比较时,表示它们本应相同但不同。

记录 EXTRA_STATEEXTRA_STATE_RINGING 它给了我相同的响应,它们都是 "RINGING" 我也试过直接将它与文本 "RINGING"

在 OnReceive 中

        Log.d("DebugData", intent.getExtras().getString(TelephonyManager.EXTRA_STATE));
        Log.d("DebugData", TelephonyManager.EXTRA_STATE_RINGING);
        if (intent.getExtras().getString(TelephonyManager.EXTRA_STATE) == TelephonyManager.EXTRA_STATE_RINGING) {
            Log.d("DebugData", "The Phone is ringing");
        } else {
            // Do Nothing
        }

我希望比较结果为真,但结果为假。

您不能将 Java 中的字符串与 == 进行比较,您需要使用 .equals() 来代替。

例如

if (TelephonyManager.EXTRA_STATE_RINGING.equals(intent.getExtras().getString(TelephonyManager.EXTRA_STATE))) { ... }

在此处阅读更多内容:https://www.geeksforgeeks.org/difference-equals-method-java/