Android-telephonyService.endCall()延迟

Android-telephonyService.endCall()延迟,android,telephonymanager,Android,Telephonymanager,我有以下BroadcastReceiver类来阻止传入呼叫 public class CallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if(null == bundle) return; String phonenumber = intent.get

我有以下
BroadcastReceiver
类来阻止传入呼叫

public class CallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();

if(null == bundle)
return;

   String phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);


   String info = "Detect Calls sample application\nOutgoing number: " + phonenumber;

   Toast.makeText(context, info, Toast.LENGTH_LONG).show();



   TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
   try {
        Class c = Class.forName(tm.getClass().getName());
        Method m = c.getDeclaredMethod("getITelephony");
        m.setAccessible(true);
        com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm);

        telephonyService.endCall();

} catch (Exception e) {
    System.out.println("error on end call : "+e.getMessage());
    e.printStackTrace();
}    
}
}
一切都正常工作,但我的问题是,
telephonyService.endCall()中每次都有延迟。也就是说,在断开连接之前我能听到一小部分铃声
另外,通过
endCall()
断开连接的呼叫不算作未接呼叫,而是算作传入呼叫。这是默认行为吗


感谢您的支持。

您使用的功能不是设计人员想要使用的,因此它不能如您所期望的那样工作也就不足为奇了。没错,我确实在使用反射来获得电话方法。但是有什么办法可以解决吗?可能对android:priority使用了更高的号码?
?由于您的广播接收器位于用户空间,且来电来自处理网络连接的驱动程序空间->处理显示拨号器弹出以便拾取并用铃声通知用户的系统空间,因此总是会有延迟。