安全卫士第四天-23阻截响一声的电话功能

安全卫士第四天--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);
 }