3

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

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

 my question is
  1. 有呼出时如何监控通话状态(RINGING、OFF_HOOK、IDLE)?
  2. android中有没有API来监控呼出的通话状态???如果是,请说明...

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

4

2 回答 2

5

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

     StateListener phoneStateListener = new StateListener();
     TelephonyManager telephonyManager =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
     telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);

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

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;
    }
}
};

manifest在文件中设置权限

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
于 2014-07-28T14:04:44.587 回答
3

具有拨出呼叫动作的 BroadcastReceiverandroid.intent.action.NEW_OUTGOING_CALLandroid.intent.action.PHONE_STATE.

android.intent.action.NEW_OUTGOING_CALL在发起拨出呼叫时广播。接收意图将有一个额外的字符串变量Intent.EXTRA_PHONE_NUMBER,其中包含传出号码。这需要许可android.permission.PROCESS_OUTGOING_CALLS

要检测来电,请为 action 注册一个 BroadcastReceiver android.intent.action.PHONE_STATE。这将在电话状态发生变化时广播。接收意图将有一个额外的字符串变量TelephonyManager.EXTRA_STATE来描述电话状态。如果这个状态是TelephonyManager.EXTRA_STATE_RINGING那么会有另一个额外的字符串变量TelephonyManager.EXTRA_INCOMING_NUMBER。此变量包含传入的电话号码。请注意,当状态不是时,此变量将不存在TelephonyManager.EXTRA_STATE_RINGING

于 2013-03-08T05:23:52.573 回答