2012-11-12 56 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 –

回答

0

我相信你有打電話:

setResultData(null); 

這樣你「殺」通過所有的接收器傳遞的消息。

如果這樣做不能幫助您嘗試找到一種方法在系統中爲您的接收器提供更高的優先級,以便您可以接管所有後續接收器調用並將結果數據設置爲空。

0

你在清單確定優先.. 例如:

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

使用在Android清單文件中的這些權限;

<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」是非常重要的,因爲這種處理禁用電話通話過程中振鈴。當有人給你打電話時,那時你的手機會顯示來電號碼的FLASH TYPE。沒有響。

這項工作在我的結尾。如果發現任何問題,請告訴我。

相關問題