2011-01-10 4 views
10

BroadcastReceiver를 사용하여 Android 전화에서 수신 전화를 가로 채기 위해Android : 프로그래밍 방식으로 비공개 번호를 감지하는 방법

tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Bundle bundle = intent.getExtras(); 
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

"비공개 번호"의 경우 두 개의 장치에서 테스트 한 결과 HTC Wildfire에서 -1, Galaxy S에서 -2로 표시됩니다. . 나는 android.telephony.PhoneNumberUtils를 점검했다. 그러나 그것은 나를 도울 수 없었다.

Android 전화에서 비공개 번호를 감지하는 기능이나 일반적인 방법이 있습니까?

답변

11

당신은 자신의 질문에 거의 답했습니다. 비공개 번호는 -1 또는 -2로 전화로 전송됩니다. 내 애플 리케이션에서 나는 0보다 작은 정수 값을 확인하고, 그렇다면 개인 번호로 취급한다. 이것은 당신이하고 싶은 것과 같게 들립니다.

나는 내 생각이 도움이되기를 바랍니다.

+1

이에 대한 문서를 찾을 수 없어서 모든 기기에서 작동하는지 잘 모르겠습니다. –

+0

나는 당신에 동의합니다. 나는 "0보다 적게"규칙을 어기는 장치가 있는지 모르지만, 지금은 나를 위해 일하는 것처럼 보인다. 설명서가 없기 때문에 안드로이드 장치가 여러 가지로 구현되어 있으므로 사용자로부터 오류 보고서를받을 때까지이 규칙을 적용 할 것입니다. 할 수있는 최선의 방법은 아니지만 이번에는 사실을 설명하는 유일한 방법입니다. –

+2

@ BaoLe 이것이 작동하는 이유는 CallLog.java의 안드로이드 소스가 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android 링크 인 것을 볼 수 있습니다. 제한된 /4.0.3_r1/android/provider/callLog.java#269 호출에는 com.android.internal.telephony.CallerInfo에 정의 된 상수가 지정됩니다 (알 수 없음의 경우 -1, 비공개의 경우 -2, 공중 전화 번호의 경우 -3). – Sojurn

관련 문제