zoukankan      html  css  js  c++  java
  • android轻松监听来电和去电

      要监听android打电话和接电话,只需下面2步骤
      1.第一步,写一个Receiver继承自BroadcastReceiver

      public class PhoneStatReceiver extends BroadcastReceiver{
      private static final String TAG = "PhoneStatReceiver";
      //        private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();
      private static boolean incomingFlag = false;
      private static String incoming_number = null;
      @Override
      public void onReceive(Context context, Intent intent) {
      //如果是拨打电话
      if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
      incomingFlag = false;
      String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
      Log.i(TAG, "call OUT:"+phoneNumber);
      }else{
      //如果是来电
      TelephonyManager tm =
      (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
      switch (tm.getCallState()) {
      case TelephonyManager.CALL_STATE_RINGING:
      incomingFlag = true;//标识当前是来电
      incoming_number = intent.getStringExtra("incoming_number");
      Log.i(TAG, "RINGING :"+ incoming_number);
      break;
      case TelephonyManager.CALL_STATE_OFFHOOK:
      if(incomingFlag){
      Log.i(TAG, "incoming ACCEPT :"+ incoming_number);
      }
      break;
      case TelephonyManager.CALL_STATE_IDLE:
      if(incomingFlag){
      Log.i(TAG, "incoming IDLE");
      }
      break;
      }
      }
      }
      } 
    

     第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
      另外注意加上相应的权限。
     

     <receiver android:name=".filter.PhoneStatReceiver">
      <intent-filter>
      <action android:name="android.intent.action.PHONE_STATE"/>
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
      </intent-filter>
      </receiver>
      <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
      <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
    
  • 相关阅读:
    JavaScript 立即执行函数和闭包
    Visual Studio2017 离线安装
    D19 Sping Boot 入门 Sping框架--Java Web之书城项目(九) AJAX
    D18 Sping Boot 入门 Sping框架--Java Web之书城项目(八) 过滤器
    D17 Sping Boot 入门 Sping框架--Java Web之Filter过滤器
    在Django中写mqtt脚本并使用
    Django对models层数据库的增删改查操作
    前端调用mqtt不能使用1883端口的问题
    vue结合mqtt
    mqtt服务器的安装(2)--mosquitto
  • 原文地址:https://www.cnblogs.com/vus520/p/2561870.html
Copyright © 2011-2022 走看看