歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android監聽來電和去電

Android中監聽來電和去電,這種功能的實現也許會在一些項目中經常實現,尤其一些防盜軟件,這裡為大家分享一下很不錯的Android監聽來電和去電的源碼:

要監聽android打電話和接電話,只需下面2步驟

1.第一步,寫一個Receiver繼承自BroadcastReceiver

  1. import android.app.Service;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.telephony.TelephonyManager;  
  6. import android.util.Log;  
  7.   
  8. public class PhoneStateBroadCastReceiver extends BroadcastReceiver  
  9. {  
  10.  private static final String TAG = "PhoneStateBroadCastReceiver";  
  11.   
  12.  private static boolean mIncomingFlag = false;  
  13.  private static String mIncomingNumber = null;  
  14.   
  15.  @Override  
  16.  public void onReceive(Context context, Intent intent)  
  17.  {  
  18.   // 如果是撥打電話   
  19.   if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))  
  20.   {  
  21.    mIncomingFlag = false;  
  22.    String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);  
  23.    Log.i(TAG, "call OUT:" + phoneNumber);  
  24.   } else  
  25.   {  
  26.    // 如果是來電   
  27.    TelephonyManager tManager =  
  28.    (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);  
  29.    switch (tManager.getCallState())  
  30.    {  
  31.    case TelephonyManager.CALL_STATE_RINGING:  
  32.     mIncomingNumber = intent.getStringExtra("incoming_number");  
  33.     Log.i(TAG, "RINGING :" + mIncomingNumber);  
  34.     break;  
  35.    case TelephonyManager.CALL_STATE_OFFHOOK:  
  36.     if (mIncomingFlag)  
  37.     {  
  38.      Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);  
  39.     }  
  40.     break;  
  41.    case TelephonyManager.CALL_STATE_IDLE:  
  42.     if (mIncomingFlag)  
  43.     {  
  44.      Log.i(TAG, "incoming IDLE");  
  45.     }  
  46.     break;  
  47.    }  
  48.   }  
  49.  }  
  50.   
  51. }  

第二步:在AndroidManifest.xml,配置寫好的Receiver,並攔截相應的BroadCastAction,

另外注意加上相應的權限:

  1. <receiver android:name=".broadcase.PhoneStateBroadCastReceiver">   
  2.             <intent-filter>  
  3.                <action android:name="android.intent.action.PHONE_STATE"/>            
  4.                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />  
  5.            </intent-filter>  
  6.   </receiver>  
  7. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  8. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />  
Copyright © Linux教程網 All Rights Reserved