【问题标题】:How to get outgoing call is answered in Android如何在 Android 中接听拨出电话
【发布时间】:2017-08-24 21:12:33
【问题描述】:

我需要一种方法来获取应答拨出电话时的状态。但是,在 OFFHOOK 状态下,我也用于呼叫拨出电话 (ACTION_CALL)。如何在不覆盖拨出呼叫活动的情况下添加 awnsered 状态?

public class OutgoingBroadcastReceiver extends BroadcastReceiver {

private Intent mIntent;
private String phonenumber = null;
public static boolean wasRinging;

@Override
public void onReceive(Context context, Intent intent) {
    mIntent = intent;

    MyPhoneStateListener phoneListener = new MyPhoneStateListener(context);
    TelephonyManager telephony = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);

    phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

}

public class MyPhoneStateListener extends PhoneStateListener {
    private final Context context;

    public MyPhoneStateListener(Context context) {
        this.context = context;

    }

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {


        switch (state) {

        case TelephonyManager.CALL_STATE_IDLE: 

            wasRinging = true;
            break;

        case TelephonyManager.CALL_STATE_OFFHOOK:

                Log.e("%%%%%%%%%%%%%%%%%%%%%%%%%%%t", "OFFHOOK");
            if (UIUDialer.isOutgoingCall() == true) {

                //Do my work when outgoing call is detected
            } 

            else if (!wasRinging)
            {

                    Log.e("%%%%%%%%%%%%%%%%%%%%%%%%%%%t", "WASRINGING");
                //Do my work when outgoing call is awnsered

            }



            context.sendBroadcast(new Intent("finish_incoming"));
            wasRinging = true;
            break;

        case TelephonyManager.CALL_STATE_RINGING:

            wasRinging = true;
            break;
        }
    }

}

}

【问题讨论】:

  • CALL_STATE_RINGING 的状态在OUTGOING_CALL 中是从不调用,因此变量 wasRinging 将始终设置为 false。

标签: android phone-call


【解决方案1】:

没有可用的公共 API。

【讨论】:

    【解决方案2】:

    为什么不直接使用布尔值 wasRinging?
    (不过,您必须将其设为静态并删除初始化)

    【讨论】:

    • 感谢安德烈亚斯的帮助和时间。我根据您的建议进行了编辑。我忘了告诉你 My PhoneStateListner 是我的广播接收器类的内部类。在接听拨出电话时查看我的日志猫后,它不会进入摘机状态..这有意义吗?
    • wasRinging 必须在您的 MyPhoneStateListener 类中
    • 我的课可以是期末课吗?公共静态类 MyPhoneStateListener 扩展 PhoneStateListener { 私有最终上下文上下文;私有静态布尔 wasRinging;
    • 如果你不想进一步扩展/继承它,当然
    • 不能让它工作......当拨出电话被接听时,它不会进入任何状态(空闲、摘机和振铃)有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多