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" />
  • 相关阅读:
    获取桌面路径
    Winform判断一个窗口是否以模态化方式打开
    Winform弹出子窗体
    Winform 窗体传值 利用委托 子窗体传值给父窗体
    GridView中小的应用
    GridView显示水平滚动条
    GridView中常用属性的设置
    将DevExpress GridView中的数据原样导出到Excel中
    DevExpress 16.2如何汉化
    C#使用NPOI导出Excel
  • 原文地址:https://www.cnblogs.com/top5/p/2482330.html
Copyright © 2011-2022 走看看