Android中如何监听手机电话状态

问题描述:当应用中需要对来电这一状态进行处理时(例如来电时显示来电话号码归属地等),就需要对电话状态进行监听。

解决步骤:1.对电话状态的监听最好是放在服务中,因为有一种服务的启动方式可以不依赖于activity的生命周期,即使activity被销毁,服务依然在后台运行。因此创建一个Myservice extends Service;

                  2.创建一个类MyPhoneStateListener extends PhoneStateListener,手动重写电话改变会触发的方法,代码如下:               

          public void onCallStateChanged(int state, String incomingNumber) {
			switch (state) {
			case TelephonyManager.CALL_STATE_IDLE:
				//空闲状态
				//实现自己的业务逻辑
				break;

			case TelephonyManager.CALL_STATE_OFFHOOK:
				//摘机状态,至少有个电话活动,该活动或是拨打或是通话
                                //实现自己的业务逻辑
break;case TelephonyManager.CALL_STATE_RINGING://响铃状态
                                //实现自己的业务逻辑
break;default:break;}super.onCallStateChanged(state, incomingNumber);}



                    3.重写Service中的onCreate()方法和onDestroy()方法,代码如下:
        @Override
	public void onCreate() {
		// 1.获取电话管理者对象
		mTM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		mMyPhoneStateListener = new MyPhoneStateListener();
		mTM.listen(mMyPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
		super.onCreate();
	}
                     当服务销毁的时候,取消电话状态的监听。
        @Override
	public void onDestroy() {
		// 取消电话状态的监听
		if (mTM != null && mMyPhoneStateListener != null) {
			mTM.listen(mMyPhoneStateListener, PhoneStateListener.LISTEN_NONE);
			
		}
		super.onDestroy();
	}              

                      这样,一旦服务被开启,就会一直监听来电的状态。

            


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值