zoukankan      html  css  js  c++  java
  • Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤
    第一步,写一个Receiver继承自BroadcastReceiver
    import android.app.Service;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.telephony.TelephonyManager;
    import android.util.Log;
     
    public class PhoneStateBroadCastReceiver extends BroadcastReceiver
    {
     private static final String TAG = "PhoneStateBroadCastReceiver";
     
     private static boolean mIncomingFlag = false;
     private static String mIncomingNumber = null;
     
     @Override
     public void onReceive(Context context, Intent intent)
     {
      // 如果是拨打电话
      if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))
      {
       mIncomingFlag = false;
       String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
       Log.i(TAG, "call OUT:" + phoneNumber);
      } else
      {
       // 如果是来电
       TelephonyManager tManager =
       (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
       switch (tManager.getCallState())
       {
       case TelephonyManager.CALL_STATE_RINGING:
        mIncomingNumber = intent.getStringExtra("incoming_number");
        Log.i(TAG, "RINGING :" + mIncomingNumber);
        break;
       case TelephonyManager.CALL_STATE_OFFHOOK:
        if (mIncomingFlag)
        {
         Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);
        }
        break;
       case TelephonyManager.CALL_STATE_IDLE:
        if (mIncomingFlag)
        {
         Log.i(TAG, "incoming IDLE");
        }
        break;
       }
      }
     }
     
    }
    第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
    另外注意加上相应的权限
    <receiver android:name=".broadcase.PhoneStateBroadCastReceiver"> 
                <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 android:name="android.permission.PROCESS_OUTGOING_CALLS" />
  • 相关阅读:
    【2017.12.02普及组模拟】送快递
    【NOIP2013模拟联考7】OSU
    顺序表元素位置倒置示例c++实现
    c++字符串排序
    JAVA实现四则运算的简单计算器
    JAVA图形小动画之简单行星运动
    JAVA多线程编程
    ege图形库之简单贪吃蛇(c++)
    ege图形库之动画排序
    c语言中一种典型的排列组合算法
  • 原文地址:https://www.cnblogs.com/top5/p/2482330.html
Copyright © 2011-2022 走看看