【问题标题】:Android - How to immediately endCall with telephonyService?Android - 如何立即使用电话服务结束通话?
【发布时间】:2013-01-22 14:31:53
【问题描述】:

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

目前正在运行,但需要 200 毫秒的延迟。没有延迟,就无法接收到意图。

延迟导致多次屏幕闪烁的后果:

my activity shows -> switch to call -> end call -> switch back to my activity

public class OutgoingCallListener extends BroadcastReceiver {
    // ...
    public void onReceive(final Context context, Intent intent) {
        // ...
        if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            // ...
            if(number.equals("*123*")) {
                // ...
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                        telephonyService.endCall();
                    }
                }, 200);
            }
        }
    }
}

我见过其他具有这种特殊号码拨号功能的应用程序,呼叫立即结束,没有结束呼叫蜂鸣声,并切换到应用程序活动而不闪烁。

Q1:有谁知道如何立即结束通话?在ACTION_NEW_OUTGOING_CALL 之前我们可以捕捉到其他意图吗?

Q2:在配置较低的手机(CPU 速度慢、内存少)上,BroadcastReceiver 的工作方式是否与一部不错的手机相同?

【问题讨论】:

    标签: android android-intent broadcastreceiver telephonymanager


    【解决方案1】:

    找到答案了……

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

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

    • 没有通知图标或消息
    • 没有呼叫屏幕
    • 没有通话时间祝酒
    • 没有通话记录
    • 没有结束通话提示音

    就像什么都没发生(如果...没有任何其他额外活动)。

    public class OutgoingCallListener extends BroadcastReceiver {
        // ...
        public void onReceive(final Context context, Intent intent) {
            // ...
            if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
                // ...
                if(number.equals("*123*")) {
                    setResultData(null);
                    // start other activities
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      Q1:有没有人知道如何立即结束通话?

      这是答案Blocking/Ending incoming call

      在 ACTION_NEW_OUTGOING_CALL 之前我们可以捕捉到其他意图吗?

      Q2:在低配置(慢 CPU、内存少)的手机上,BroadcastReceiver 的工作方式是否与在不错的手机上一样?

      是的

      【讨论】:

        猜你喜欢
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多