Android 来电监听

作者: 心田祭思 | 来源:发表于2018-01-23 14:12 被阅读242次

    在你要监听来电的地方就行

     private void telephony() {
            //获得相应的系统服务
            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
           
            if(tm != null) {
                try {
                    MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener();
                    myPhoneCallListener.setCallListener(new MyPhoneCallListener.CallListener() {
                        @Override
                        public void onCallRinging() {
                            //回调,做你想做的,我是关闭当前界面
                            finish();
                        }
                    });
                    // 注册来电监听
                    tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);
                } catch(Exception e) {
                    // 异常捕捉
                }
            }
        }
    

    PhoneStateListener的onCallStateChanged方法监听来电状态
    监听电话的类 MyPhoneCallListener.java

    package com.hyphenate.chatuidemo.receiver;
    
    import android.telephony.PhoneStateListener;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    
    
    /**
     * Created by Mr.Robot on 2018/1/23.
     * https://github.com/Siomt
     */
    
    public class MyPhoneCallListener extends PhoneStateListener {
    
        private static final String TAG = "MyPhoneCallListener";
        protected CallListener listener;
             /**
             * 返回电话状态
             *
             * CALL_STATE_IDLE 无任何状态时
             * CALL_STATE_OFFHOOK 接起电话时
             * CALL_STATE_RINGING 电话进来时
             */
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:// 电话挂断
                    Log.d(TAG ,"电话挂断...");
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK: //电话通话的状态
                    Log.d(TAG ,"正在通话...");
                    listener.onCallRinging();
                    break;
                case TelephonyManager.CALL_STATE_RINGING: //电话响铃的状态
                    Log.d(TAG ,"电话响铃");
                    break;
            }
            super.onCallStateChanged(state, incomingNumber);
        }
        //写个回调
        public void setCallListener(CallListener callListener){
            this.listener = callListener;
        }
        //回调接口
        public interface CallListener{
            void onCallRinging();
        }
    }
    

    相关文章

      网友评论

        本文标题:Android 来电监听

        本文链接:https://www.haomeiwen.com/subject/rwjsaxtx.html