安全卫士第四天-23阻截响一声的电话功能
private class MyPhoneListener extends PhoneStateListener{
// 电话状态发生改变的时候 调用的方法
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE: // 处于静止状态: 没有呼叫
endRingTime = System.currentTimeMillis();
long calltime = endRingTime-firstRingTime;
Log.i(TAG,"calltime ="+calltime);
if(firstRingTime<endRingTime && calltime<5000 && calltime >0){
Log.i(TAG,"响一声的电话");
endRingTime = 0;
firstRingTime = 0;
// 弹出来notification 通知用户这是一个骚扰电话
showNotification(incomingNumber);
}
if(view!=null){
windowmanager.removeView(view);
view = null;
}
// 再获取一次系统的时间
break;
case TelephonyManager.CALL_STATE_RINGING: // 零响状态
firstRingTime = System.currentTimeMillis();
/**
* 弹出notification 通知用户添加黑名单号码
* @param incomingNumber
*/
public void showNotification(String incomingNumber) {
//1. 获取notification的管理服务
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//2 把一个要想显示的notification 对象创建出来
int icon =R.drawable.notification;
CharSequence tickerText = "发现响一声号码";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
// 3 .配置notification的一些参数
Context context = getApplicationContext();
CharSequence contentTitle = "响一声号码";
CharSequence contentText = incomingNumber;
notification.flags = Notification.FLAG_AUTO_CANCEL;
Intent notificationIntent = new Intent(this, CallSmsActivity.class);
// 把响一声的号码 设置到intent对象里面
notificationIntent.putExtra("number", incomingNumber);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
// 4. 通过manger把notification 激活
manager.notify(0, notification);
}