2012-07-18 5 views
2

안드로이드에서 수신 전화를 필터링 (차단) 할 수있는 방법이 있는지 궁금합니다 (2.1 이상 고려). 리플렉션을 사용하여 솔루션을 찾았지만 매우 깨끗하고 안정적인 솔루션이 아닌 것 같습니다. 거기에 어떤 표준이나 구글 권장 방법이 있나요?전화 수신 거부 (블랙리스트) - 반사 없음

업데이트 : 아무나?

답변

2

는 수신 전화 번호를 얻을

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("DEBUG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context, phoneNumber, 2000).show(); 
      Log.w("DEBUG", phoneNumber); 
     } 
    } 
} 

그것이 도움이 될 것입니다 희망 당신의 생성 된 필터 목록에있는 번호와 비교하기 위해 다음과 같은 방송 수신기를 사용합니다. 응용 프로그램의 사용자 인터페이스에 의해 블랙리스트에 숫자 목록을 작성해야합니다.

+1

1) 응용 프로그램 태그 내의 매니페스트 파일에서도 다음을 사용하십시오. <수신기 로이드 ". BroadCastClassActivity 'NAME => <의도 필터> <동작 로이드 이름 ="android.intent.action.PHONE_STATE "> 2) 권한을 추가하십시오. "android.permission.READ_PHONE_STATE" – spacetime

+0

고맙습니다. 지금까지는 표준 방법이었습니다. 하지만 지금은 블랙리스트에있는 경우 그 전화를 차단해야합니다. 원치 않는 반영이 일반적으로 발생하는 부분입니다. –

+0

이 흐름을 고려하십시오. 1) 응용 프로그램에 차단해야하는 숫자를 추가하는 인터페이스가 있습니다. 2) 전화 번호를 저장합니다. 배열 목록의 번호 3) 일단 전화가 걸려 오면 번호를 얻습니다. 맞습니까? 4) 우리가 이전에 저장 한 배열 목록에있는 전화 번호와 비교하십시오. 5)받은 전화 번호가 배열 목록에 있으면 통화를 끊으십시오. – spacetime