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使用了更高的号码?
?由于您的广播接收器位于用户空间,且来电来自处理网络连接的驱动程序空间->处理显示拨号器弹出以便拾取并用铃声通知用户的系统空间,因此总是会有延迟。