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();
}
}
网友评论