私のアプリケーションには、次のコードを使用して呼び出しが受信された場合に起動されるアクティビティがあります。
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
incall = true;
} else if (state == TelephonyManager.CALL_STATE_IDLE) {
if (incall) {
c = TestOnDemo.this;
Intent i = new Intent(TestOnDemo.this,
IncallActivity.class);
startActivity(i);
incall = false;
}
} else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
incall = true;
} else if (state == 0) {
// Incoming call: Pause music
incall = true;
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if (mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
これは正常に動作します - 通話が終了した後、特定のアクティビティが起動されます。しかし、アプリが実行されていないか、フォアグラウンドになく、通話を受信すると問題が発生します。通話が終了すると、アクティビティが再び開始されます。誰か助けてください。ありがとう?