안드로이드 개발 질문/답변
(글 수 45,052)
telponyManager의 onCallStateChanged이벤트에서
Intent myIntent = new Intent(Intent.ACTION_ANSWER);
startActivity(myIntent);
이런식의 코드접근은 안된다고 하는 글밖에없고.. 된다는 말밖에없네요...
저는 2가지 방법을 생각해봤는데
telnet치면 나오는 콘솔명령어로 gsm accept 전화번호치면 일단 에뮬에선 전화받아집니다
(제단말에선 콘솔명령어를 어떻게 날리는지 모르겟네요...)
또하나는 com.android.phone.InCallScreen을 사용하는건데요..
말그대로 전화올 때 전환되는 액티비티인데요..
안드로이드 소스를 다운받아서보면.(sdk말고요.. ) new Intent메소드에
} else if (action.equals(Intent.ACTION_ANSWER)) {
internalAnswerCall();
app.setRestoreMuteOnInCallResume(false);
return InCallInitStatus.SUCCESS;
라고 적혀있네요..
그럼 com.android.phone.InCallScreen접근해야되는데요..
sdk에는 포함되지 않고 그냥 단말이나 에뮬에만 포함되어있는데 이것을 프로그램으로 참조할수있는건가요?///
2010.03.15 23:11:30
두 가지 방법다 불가능할 듯 합니다. 우선 Android Console 은 Emulator 에서만 지원하는 기능이구요... SDK 에 포함되지 않고 공개되지 않은 패키지를 참조하기는 힘들 듯 합니다.
2010.03.15 23:23:26
구글에서 일부러 막아논것일까요?ㅡ... 공개되지 않은 패키지는 아닙니다... 안드로이드 사이트에서 직접받은 소스코드이구요...
apk소스를 직접호출할수는없나요? System/app/phone.apk에도 InCallScreen이있습니다.
2010.03.15 23:32:39
음... Phone 어플리케이션의 메니페스트 파일을 살펴보시면, InCallScreen Activity 의 경우, exported 속성값이 false 로 되어 있습니다.. 그래서 다른 어플리케이션에서 해당 Activity 를 호출 하실 수가 없습니다...
2010.03.15 23:46:03
아..그렇네요.. InCallScreenShowActivation은 exported가 true여서 봤더니만.
if (getIntent().getAction().equals(InCallScreen.ACTION_SHOW_ACTIVATION)) {
Intent newIntent = new Intent().setClass(this, InCallScreen.class)
.setAction(InCallScreen.ACTION_SHOW_ACTIVATION);
startActivity(newIntent);
} else {
Log.e(LOG_TAG, "Inappropriate launch of InCallScreenShowActivation");
}
결국 바로 InCallScreen은 참조해버리네요....