以无编程方式拒绝呼叫没有响铃

问题描述:

我正在创建一个应用程序拒绝来自特定号码的呼叫,甚至没有获得一个单一的铃声呼叫人。以无编程方式拒绝呼叫没有响铃

我有一个代码拒绝部分环后的呼叫。请不要说这个问题重复。我一直在寻找代码拒绝没有响了很长时间的电话仍然没有找到解决方案。请帮助我!

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 –

+2

这与问题中提供的代码完全相同。 .. – RvdK

+1

@PoweRoy你必须创建接口的aidl文件.. – Neal

+2

问题代码也使用ITelephony。怀疑它是相同的代码。问题不在于呼叫被拒绝,而是呼叫一次。 – RvdK

我相信你有打电话:

setResultData(null); 

这样你“杀”通过所有的接收器传递的消息。

如果这样做不能帮助您尝试找到一种方法在系统中为您的接收器提供更高的优先级,以便您可以接管所有后续接收器调用并将结果数据设置为空。

你在清单确定优先.. 例如:

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

使用在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。没有响。

这项工作在我的结尾。如果发现任何问题,请告诉我。