Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-如何使用telephonyService立即结束通话?_Android_Android Intent_Broadcastreceiver_Telephonymanager - Fatal编程技术网

Android-如何使用telephonyService立即结束通话?

Android-如何使用telephonyService立即结束通话?,android,android-intent,broadcastreceiver,telephonymanager,Android,Android Intent,Broadcastreceiver,Telephonymanager,在我的应用程序中,有一个功能可以在拨打某个号码(例如,*123*)时结束呼出呼叫(并启动其他活动) 它目前正在工作,但需要200毫秒的延迟。如果没有延迟,意图就无法实现 延迟会导致多个屏幕闪烁: 我的活动显示->切换到呼叫->结束呼叫->切换回我的活动 公共类OutgoingCallListener扩展了BroadcastReceiver{ // ... 公共void onReceive(最终上下文、意图){ // ... if(intent.getAction().equals(intent.

在我的应用程序中,有一个功能可以在拨打某个号码(例如,
*123*
)时结束呼出呼叫(并启动其他活动)

它目前正在工作,但需要200毫秒的延迟。如果没有延迟,意图就无法实现

延迟会导致多个屏幕闪烁:

我的活动显示
->
切换到呼叫
->
结束呼叫
->
切换回我的活动

公共类OutgoingCallListener扩展了BroadcastReceiver{
// ...
公共void onReceive(最终上下文、意图){
// ...
if(intent.getAction().equals(intent.ACTION\u NEW\u OUTGOING\u CALL)){
// ...
if(数字等于(“*123*”){
// ...
Handler=newhandler();
handler.postDelayed(新的Runnable(){
公开募捐{
telephonyService.endCall();
}
}, 200);
}
}
}
}
我见过其他使用这种特殊号码拨号功能的应用程序,通话会立即结束,不会发出结束通话的蜂鸣音,并切换到应用程序活动而不会闪烁

Q1:有人知道如何毫不延迟地结束通话吗?在
行动(新的)(新的)通话(
通话)之前,我们还可以捕捉到其他意图吗?


Q2:在低规格(CPU速度慢,内存少)的手机上,
BroadcastReceiver
会像在普通手机上一样工作吗?

Q1:有人知道如何毫不延迟地结束通话吗

这是答案

在行动、新的、传出的电话之前,我们还有其他的意图吗

问题2:在低规格(CPU速度慢、内存少)的手机上,BroadcastReceiver的工作方式是否与普通手机相同

得到了答案

要立即结束一个传出的呼叫,我们甚至不需要从
ITelephony
调用
endCall()
,相反,我们可以简单地使用setResultData(null)

它不同于手动结束调用或使用endCall,使用
setResultData(null)

  • 没有通知图标或消息
  • 无呼叫屏幕
  • 无通话时间敬酒
  • 无通话记录
  • 无终止呼叫嘟嘟声
就像什么都没发生一样(如果……没有任何其他额外的活动)

公共类OutgoingCallListener扩展了BroadcastReceiver{
// ...
公共void onReceive(最终上下文、意图){
// ...
if(intent.getAction().equals(intent.ACTION\u NEW\u OUTGOING\u CALL)){
// ...
if(数字等于(“*123*”){
setResultData(空);
//开展其他活动
}
}
}
}