2012-11-12 3 views
9

발신자에게 단일 벨소리를받지 않고 특정 번호의 전화를 거부하는 앱을 만듭니다.반지없이 프로그래밍 방식으로 전화 거부

부분적인 벨소리 후 통화를 거부하는 코드가 있습니다. 이 질문이 반복된다고 말하지 마십시오. 나는 오랫동안 링을 사용하지 않고 호출을 거부하는 코드를 찾고 있었지만 여전히 해결책을 찾지 못했습니다. 친절하게 도와주세요!

public void onReceive(Context context, Intent intent) { 
    Bundle b = intent.getExtras(); 
    incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 


     for(int i=0;i<blockedNumbers.length;i++) 
     { 
      if(incommingNumber.equalsIgnoreCase(blockedNumbers[i])) 
      { 
       TelephonyManager telephony = (TelephonyManager) 
       context.getSystemService(Context.TELEPHONY_SERVICE); 
        try { 
        Class c = Class.forName(telephony.getClass().getName()); 
        Method m = c.getDeclaredMethod("getITelephony"); 
        m.setAccessible(true); 
        telephonyService = (ITelephony) m.invoke(telephony); 
        telephonyService.silenceRinger(); 
        telephonyService.endCall(); 
        } catch (Exception e) { 
        e.printStackTrace(); 
        } 
      } 
     } 

    } 

이것은 전화를 거절하는 데 사용 된 코드입니다. 그러나 그것은 하나의 반지로 거부합니다.

+1

http://stackoverflow.com/questions/7121508/android-taking-complete-control-of-phone-is-it-possible-how/7121586#7121586 –

답변

4

이 시도 : 그것은 작동하고
http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html
, 나는 시도했습니다.

+2

정확히 동일한 질문입니다. .. – RvdK

+1

@PoweRoy 인터페이스 용 보조 파일을 만들어야합니다 .. – Neal

+2

질문 코드는 ITelephony도 사용합니다. 의심되는 것은 동일한 코드입니다. 문제는 통화가 올바르게 거절되지 않았지만 통화가 1 번 울리는 것입니다. – RvdK

0

난 당신이 전화를 믿습니다 :

setResultData(null); 

그렇게함으로써 당신은 메시지가 모든 수신기를 통해 전달되는 "죽이기".

이것이 도움이되지 않는다면 시스템에서 수신자에게 더 높은 우선 순위를 부여하는 방법을 찾아야하므로 모든 후속 수신자 호출에 대해 결과 데이터를 인계하고 null로 설정할 수 있습니다.

0

당신은 매니페스트에 우선 순위를 정의해야합니다 .. 예를 들어 :

<receiver android:name=".CallReceiver"> 
    <intent-filter android:priority="100"> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 
0

안드로이드 매니페스트 파일에서 이러한 권한을 사용; 이 통화 중 울림 해제 전화를 처리하기 때문에

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

첫 번째 허락 "MODIFY_PHONE_STATE은"매우 중요하다. 누군가 당신에게 전화하면, 그 때 당신의 전화는 착신 번호의 플래시 종류를 보여줄 것입니다. 울리는 소리없이.

내 작품이 작동합니다. 문제가있는 경우 알려주십시오.