android - 如何检测拨出电话中的已接听或拒绝状态

标签 android broadcastreceiver call telephonymanager phone-state-listener

我尝试为 android 编写一个程序。我想用我的程序进行调用,然后识别调用状态。使用 Flowing Function,我可以识别挂出状态和应答状态,但它不起作用。我尝试了这个功能,但它也不起作用

private class PhoneCallListener extends PhoneStateListener {

    private boolean isPhoneCalling = false;

    String LOG_TAG = "LOGGING 123";

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

        if (TelephonyManager.CALL_STATE_RINGING == state) {
            // phone ringing
            Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
        }

        if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
            // active
            Log.i(LOG_TAG, "OFFHOOK");

            isPhoneCalling = true;
        }

        if (TelephonyManager.CALL_STATE_IDLE == state) {
            // run when class initial and phone call ended, need detect flag
            // from CALL_STATE_OFFHOOK
            Log.i(LOG_TAG, "IDLE");

            if (isPhoneCalling) {

                Log.i(LOG_TAG, "restart app");

                // restart app
                Intent i = getBaseContext().getPackageManager()
                        .getLaunchIntentForPackage(
                                getBaseContext().getPackageName());
                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);

                isPhoneCalling = false;
            }

        }
    }
}

最佳答案

您不能使用 CALL_STATE_IDLE 和 CALL_STATE_OFFHOOK 来做到这一点。 您必须以编程方式检测传出铃声的结束...

关于android - 如何检测拨出电话中的已接听或拒绝状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14879603/

相关文章:

java - 也从包含国家代码的号码获取电话号码

android - 自定义包含布局的 Textview

android - 基于接收广播 Intent 启动网络通信的正确方法是什么?

javascript - JS : more efficient way to call an image

java - 保存卡在适配器中的位置

android - 与 Android 应用程序中的 Activity 进行通信的独立线程后台服务

android - Xamarin.Android:在 SMS Delivered Broadcast Receiver 中检测 SMS

android - Firebase onComplete 从未在后台进程中调用

c - 如何将一个值从 c 程序返回到调用它的后台脚本?

java - 如何在结束来电android时发出通知