android - 如何检测未接听的来电挂断。?

标签 android broadcastreceiver call telephonymanager

我发现很多问题都在描述如何使用 telephonymanager 获取电话的通话状态。我在 stackoverflow 中关注了这个问题 - How to detect when phone is answered or rejected .但这是为了分别检测各种电话状态。 只有当来电挂断且无人接听时,我才需要添加提醒对话框。 如何检测此特定事件。?

最佳答案

Android 5.0 及更高版本可能会发送重复事件。您可以考虑保留之前的状态以进行比较 -

private class PhoneStateChangeListener extends PhoneStateListener {

static final int IDLE = 0;
static final int OFFHOOK = 1;
static final int RINGING = 2;
int lastState = IDLE;

@Override
public void onCallStateChanged(int state, String incomingNumber) {
    switch(state){
        case TelephonyManager.CALL_STATE_RINGING:
             lastState = RINGING;
             break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
             lastState = OFFHOOK;
             break;
        case TelephonyManager.CALL_STATE_IDLE:
             if (lastState == RINGING) {
                 // Process for call hangup without being answered
             }
             lastState = IDLE;
             break;
    }
}
}

关于android - 如何检测未接听的来电挂断。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716227/

相关文章:

android - 强制接近警报使用网络提供商

android - 为什么我的 Activity 会泄漏?

java - 第一次尝试从 adb 启动完成后无法正常工作

android - 如何在Android中的BroadcastReceiver类中访问数据库?

java - 是否可以将事件从线程发送到 Activity ?

java - 安卓NDK : Calling Java functions from C++

android - 让操作栏 "up navigation"触发dialogfragment

django - 从 Django 调用数据库函数的正确方法?

javascript - 在某处调用数组的(未定义的)其余部分

Javascript:混淆函数调用方法的用法