을 onCallStateChanged 여기에 시나리오의 :두 번째 호출 - 안드로이드, TelephonyManager이
내 전화는 내가 대답 전화를 가져옵니다.
내가 전화를하는 동안 두 번째 전화가 내 전화에옵니다. 나는 첫 번째 전화를 계속한다.
두 번째 호출은 음성 메일로 곧바로 전달됩니다. 어떤 시점에서 안드로이드 애플 리케이션은 (onCallStateChanged를 통해) 알림을 얻는 것 같습니다.
첫 번째 전화를 끊으면 콜 로그에 액세스 할 수 있으며 가장 최근의 통화로 무언가가 완료됩니다 (정상적으로 작동 함).
은 정말 두 번째 통화에 대해 알아야 할, 그러나 지금 현재로, 그것에 대해 모든 액세스/알림을받을 수없는 것. 그것은 CallLog 데이터베이스에 기록되지 않고 있으며 TelephonyManager가 "듣지"않습니다.
필자는 누락 된 권한 한두 가지가 있기를 바라고 있습니다.
누구든지이 문제를 해결할 수 있습니까?
AndroidManifest.xml에 권한 (권한의 일부 앱이하는 다른 것들에 대한 있습니다) :
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
onCallStateChanged() 코드 :
switch(mCallState) {
case TelephonyManager.CALL_STATE_IDLE:
if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
Toast.makeText(getApplicationContext(), "Android: NEW OUTGOING CALL", Toast.LENGTH_LONG).show();
} else if (state == TelephonyManager.CALL_STATE_RINGING) {
Toast.makeText(getApplicationContext(), "Android: NEW INCOMING CALL", Toast.LENGTH_LONG).show();
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if (state == TelephonyManager.CALL_STATE_IDLE) {
Toast.makeText(getApplicationContext(), "Android: CALL DISCONNECTED", Toast.LENGTH_LONG).show();
// Log Phonecall (wait 5 seconds before logging)
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
LogPhonecall_Callog();
}
}, 5000);
} else if (state == TelephonyManager.CALL_STATE_RINGING) {
Toast.makeText(getApplicationContext(), "Android: ANOTHER CALL WAITING", Toast.LENGTH_LONG).show();
}
break;
case TelephonyManager.CALL_STATE_RINGING:
if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
Toast.makeText(getApplicationContext(), "Android: CALL RECEIVED", Toast.LENGTH_LONG).show();
} else if (state == TelephonyManager.CALL_STATE_IDLE) {
Toast.makeText(getApplicationContext(), "Android: MISSED CALL", Toast.LENGTH_LONG).show();
// Log Phonecall (wait 5 seconds before logging)
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
LogPhonecall_Callog();
}
}, 5000);
}
break;
}
mCallState = state;
휴대 전화는 만 호출에 의해 인정됩니다
전화가 전화를 받는지 확실하지 않습니다. 네트워크에서 음성 메일로 전환 될 수 있습니다. – Henry
그래, 괜찮아. 거기에 어떤 정보가 있나요? –