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(空);
//开展其他活动
}
}
}
}