앱을 개발 중이며 앱 내에서 전화를 시작할 수 있었지만 종료되면 정보가 보존되고 팝업이 나타나기 시작하여 앱을 다시 시작하려고합니다.Android start 통화 종료 후 방법
전화를 걸고 별도의 인스턴스로 나오지만 팝업 할 수 없었습니다. 이 질문은 올해 3 월에 답변되었지만, 다른 사람들이 더 좋은 아이디어를 내놓았는지 알고 싶었습니다. 고맙습니다.
앱을 개발 중이며 앱 내에서 전화를 시작할 수 있었지만 종료되면 정보가 보존되고 팝업이 나타나기 시작하여 앱을 다시 시작하려고합니다.Android start 통화 종료 후 방법
전화를 걸고 별도의 인스턴스로 나오지만 팝업 할 수 없었습니다. 이 질문은 올해 3 월에 답변되었지만, 다른 사람들이 더 좋은 아이디어를 내놓았는지 알고 싶었습니다. 고맙습니다.
활동 라이프 사이클 다이어그램을 보면 전화가 걸려 오면 응용 프로그램에 onPause()
메서드가 호출됩니다. 내가 생각할 수있는 것은 응용 프로그램이 사용자에게 더 이상 보이지 않는 경우에 상관없이 실행되는 스레드에서 데이터를 쓰는 SharedPreferences
을 사용하여 데이터를 저장하는 것입니다. 호출 수신기 또는 onPause()
메서드에서이 작업을 수행해야합니다. 그러나보다 실제적인 접근법은 onRestoreInstanceState()
방법으로 최근에 복원 될 모든 관련 데이터를 넣는 방법 인 onSaveInstanceState()
을 사용하는 것입니다.
더 읽기 여기 그들이 작동하는 방법 :에 갈 때 호출이 발생한 경우 PhoneStateListener
클래스에서
http://developer.android.com/reference/android/app/Activity.html#onRestoreInstanceState(android.os.Bundle) http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle) http://developer.android.com/reference/android/telephony/PhoneStateListener.html
당신이 표시하는 일부 flags
을 사용할 수 있습니다 CALL_STATE_RINGING
상태로 설정 한 다음 CALL_STATE_IDLE
에 전화가 걸려오고있을 때마다 IDLE 상태가 항상 발생하기 때문에 전화가 걸려 있는지 확인합니다. 하지만 플래그를 가지고있을 때 if(flag)
을 확인하고 플래그를 변경하면 청취자가 다시 CALL_STATE_IDLE
에있을 때마다 플래그가 반전되어 아무 작업도 수행되지 않습니다. 그냥 생각.
편집 :가 활동/서비스 클래스에서 내부 클래스로하여 PhoneStateListener 클래스를 추가하고 TelephonyManager
를 사용하여 전화 상태 리스너를 등록합니다. 당신이 길을 찾을 수 있기를 바랍니다.
public class MyClassActivity extends Activity
{
....
//set here your call listener here
}
protected class PhoneState extends PhoneStateListener{
private boolean mCall=false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch(state)
{
case TelephonyManager.CALL_STATE_RINGING:
mCall=true; //fire the flag that there is call ongoing
break;
case TelephonyManager.CALL_STATE_IDLE:
if(mCall)
{
mCall=false; //Reverting the flag, indicating you are aware that there was call
// Here do the rest of your operation you want
}
break;
default:
}
super.onCallStateChanged(state, incomingNumber);
}
}
이것은 매우 유용합니다! 나는이 개념으로 바닥에 깔려있다. 이 행동의 예를 어디서 발견 할 수 있는지 모르겠습니까? 나는이 모든 개념에 대해 머리를 쓰려고 노력하고있다. 니콜라, 고마워! – smithseanp16
전화 상태 수신기에 대한 아이디어를 추가했습니다. 만약 당신이 나를 원한다면, 나는 SharedPrefs, onSaveInstnc(), onRstrInstnc() ...을 위해 당신을 위해 글을 쓸 것입니다.하지만이 몇 가지에 대해서는 많은 예제가 있다고 생각합니다. 건배. –
이것은 믿기지 않을 정도로 완벽합니다! – smithseanp16