如何获取拨出电话的通话状态?

Sac*_*aik 3 android telephonymanager android-activity android-broadcast

我是 android 初学者,正在开发一个 android 应用程序来监视用户通话时的网络状态(对于来电和去电)...

我可以通过实现 PhonestateListner 类并覆盖 onCallStateChanged 方法来监视网络状态。对于来电,我使用的是在 onCallStateChanged 方法内的 TelephonyManager 类中定义的常量(CALL_STATE_IDLE、CALL_STATE_OFFHOOK 和 CALL_STATE_RINGING),但这些常量无法正常工作对于拨出电话...

 my question is
Run Code Online (Sandbox Code Playgroud)
  1. 有来电时如何监控通话状态(RINGING,OFF_HOOK, IDLE)??
  2. android中是否有任何API来监控拨出电话的通话状态???如果是,那么请说明...

请帮助我理解这个概念...感谢您的时间

Gop*_*rma 5

下面的代码可帮助您在 onCreate 中获取网络状态代码

     StateListener phoneStateListener = new StateListener();
     TelephonyManager telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
     telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
Run Code Online (Sandbox Code Playgroud)

创建一个内部类来监听手机的监听状态。

class StateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
    super.onCallStateChanged(state, incomingNumber);
    switch (state) {
        case TelephonyManager.CALL_STATE_RINGING:
            break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
            System.out.println("call Activity off hook");
            LockScreenActivity.this.finish();
            break;
        case TelephonyManager.CALL_STATE_IDLE:
            break;
    }
}
};
Run Code Online (Sandbox Code Playgroud)

在manifest文件中设置权限

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)