Android 來(lái)電監(jiān)聽(tīng)

在你要監(jiān)聽(tīng)來(lái)電的地方就行

 private void telephony() {
        //獲得相應(yīng)的系統(tǒng)服務(wù)
        TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
       
        if(tm != null) {
            try {
                MyPhoneCallListener myPhoneCallListener = new MyPhoneCallListener();
                myPhoneCallListener.setCallListener(new MyPhoneCallListener.CallListener() {
                    @Override
                    public void onCallRinging() {
                        //回調(diào),做你想做的,我是關(guān)閉當(dāng)前界面
                        finish();
                    }
                });
                // 注冊(cè)來(lái)電監(jiān)聽(tīng)
                tm.listen(myPhoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);
            } catch(Exception e) {
                // 異常捕捉
            }
        }
    }

PhoneStateListener的onCallStateChanged方法監(jiān)聽(tīng)來(lái)電狀態(tài)
監(jiān)聽(tīng)電話(huà)的類(lèi) 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;
         /**
         * 返回電話(huà)狀態(tài)
         *
         * CALL_STATE_IDLE 無(wú)任何狀態(tài)時(shí)
         * CALL_STATE_OFFHOOK 接起電話(huà)時(shí)
         * CALL_STATE_RINGING 電話(huà)進(jìn)來(lái)時(shí)
         */
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:// 電話(huà)掛斷
                Log.d(TAG ,"電話(huà)掛斷...");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK: //電話(huà)通話(huà)的狀態(tài)
                Log.d(TAG ,"正在通話(huà)...");
                listener.onCallRinging();
                break;
            case TelephonyManager.CALL_STATE_RINGING: //電話(huà)響鈴的狀態(tài)
                Log.d(TAG ,"電話(huà)響鈴");
                break;
        }
        super.onCallStateChanged(state, incomingNumber);
    }
    //寫(xiě)個(gè)回調(diào)
    public void setCallListener(CallListener callListener){
        this.listener = callListener;
    }
    //回調(diào)接口
    public interface CallListener{
        void onCallRinging();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 先上結(jié)論:幽靈類(lèi)型(Phantom Type)是一種可以把有些運(yùn)行時(shí)才能檢測(cè)到的錯(cuò)誤,在編譯時(shí)檢測(cè)出來(lái)的技巧。按照...
    superxff閱讀 672評(píng)論 0 0
  • 2017年9月26日 雨 星期二 今日的雨驅(qū)走了夏留在我們唇邊的最后一絲淡淡的吻,之后的日子里,我們所要面對(duì)的就只...
    泥鰍的戀愛(ài)閱讀 292評(píng)論 0 3
  • MeiuPic 相冊(cè)是一款簡(jiǎn)單易用的相冊(cè)系統(tǒng),支持 xx分類(lèi) ---> xx相冊(cè) ---> xx相片集 方式顯示你...
    Qoo酷兒閱讀 1,886評(píng)論 0 1

友情鏈接更多精彩內(nèi)容