歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android監聽來電和去電

Android監聽來電和去電

日期:2017/3/1 10:13:55   编辑:Linux編程

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

第二步:在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