电话管理器

package com.example.administrator.mobilesafe.service;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

/**
 * Created by Administrator on 2017/9/29.
 */

public class addressService extends Service {

    private TelephonyManager mTM;
    private myPhoneStateListener mPhonel;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        // 此方法服务第一次被调用时被调用
        // 1 管理吐司的显示 电话状态的监听  (电话管理者)
        mTM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        // 监听对应状态
        mPhonel = new myPhoneStateListener();
        // 两个参数 PhoneStateListener对象,int 类型常量(监听电话状态)
        mTM.listen(mPhonel, PhoneStateListener.LISTEN_CALL_STATE);
        super.onCreate();
    }
    class myPhoneStateListener extends PhoneStateListener{
        // 手动重写电话状态发生改变的方法
        // 读取电话状态需要加权限

        @Override
        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;
            }
            super.onCallStateChanged(state, incomingNumber);
            // 出现问题 即使关闭服务  上面的监听逻辑也会执行一遍
            // 需求 开启服务开启监听 关闭服务 不需要监听
            // 解决: 在关闭 服务的时候调用ondestory方法
        }
    }

    @Override
    public void onDestroy() {
      // 销毁吐司
        //取消 还调用此方法 传参数参不同(参1 监听的对象,listen_null(不监听))
        if(mTM!=null && mPhonel!=null){
            mTM.listen(mPhonel,PhoneStateListener.LISTEN_NONE);
        }
     
        super.onDestroy();
    }
}

你可能感兴趣的:(电话管理器)