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>
    
  • 相关阅读:
    你必须用角色管理工具安装Microsoft .NET Framework 3.5
    LINQ 小心Access to modified closure 问题
    .net BCL获取所有磁盘的信息
    对象的序列化和反序列化及其实现和使用
    对于CSDN博客文章不能爬取的问题
    IO与文件读写Java的IO流架构
    对象的深复制与浅复制 实现Cloneable接口实现深复制 序列化实现深复制
    博客园文章爬取代码
    【HtmlParser】HtmlParser使用
    爬虫简单示例,用httpClient4.2.1实现(转载)
  • 原文地址:https://www.cnblogs.com/vus520/p/2561870.html
Copyright © 2011-2022 走看看