不在着信があることをアプリケーションに認識させようとしています。電話の状態がいつ変化したかを検出する 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();
// }
}
私が抱えている問題は、電話が鳴っているときにアプリケーションが検出し、 に設定ringing
しtrue
、適切なトースト メッセージを表示することです。ただし、電話機の状態が の場合、トースト メッセージを表示するステートメントにidle
は入りません。ただし、そのすぐ上のトースト メッセージにコメントすると、.if (ringing)
ringing is true
Phone is idle
電話が鳴ってから電話が再びアイドル状態になるまでのどこかringing
にリセットされている可能性はありますか?false