0

不在着信があることをアプリケーションに認識させようとしています。電話の状態がいつ変化したかを検出する BroadcastReceiver を作成しました。これが私のonReceive()方法です:

public void onReceive(Context context, Intent intent) {
    boolean ringing = false, callReceived = false;
    String callerPhoneNumber = "";
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
        ringing = true;
        Bundle bundle = intent.getExtras();
        callerPhoneNumber= bundle.getString("incoming_number");

        if (ringing) {
            Toast.makeText(context, "Phone call from: " + callerPhoneNumber, Toast.LENGTH_LONG).show();
        }
    }

    if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) {
        callReceived = true;
        Toast.makeText(context, "Call received.", Toast.LENGTH_LONG).show();
    }

    if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {
//          Toast.makeText(context, "Phone is idle", Toast.LENGTH_LONG).show();

        if (ringing) {
            Toast.makeText(context, "ringing is true", Toast.LENGTH_LONG).show();
        }

//          if (ringing && !callReceived) {
//              Toast.makeText(context, "It was A MISSED CALL from : " + callerPhoneNumber, Toast.LENGTH_LONG).show();
//          }
    }

私が抱えている問題は、電話が鳴っているときにアプリケーションが検出し、 に設定ringingtrue、適切なトースト メッセージを表示することです。ただし、電話機の状態が の場合、トースト メッセージを表示するステートメントにidleは入りません。ただし、そのすぐ上のトースト メッセージにコメントすると、.if (ringing)ringing is truePhone is idle

電話が鳴ってから電話が再びアイドル状態になるまでのどこかringingにリセットされている可能性はありますか?false

4

1 に答える 1