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>
    
  • 相关阅读:
    linux文件系统初探--Day2(3)
    linux文件系统初探--Day2(2)
    linux文件系统初探--Day2(1)
    linux文件系统初探--Day1
    LKD-虚拟文件系统
    linux-nova 安装
    per-file DAX 工作日志(2)
    linux 内核设计与实现——进程管理
    关于用户与服务端密码的校验问题 !mysql php
    [Err] 1055
  • 原文地址:https://www.cnblogs.com/vus520/p/2561870.html
Copyright © 2011-2022 走看看