package com.pocketdigi.phonelistener; import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager; public class PhoneReceiver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubSystem.out.println("action"+intent.getAction());if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){//如果是去電(撥出)System.out.println("撥出");}else{//查了下android文檔,貌似沒有專門用於接收來電的action,所以,非去電即來電System.out.println("來電");TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);//設定一個監聽器}}PhoneStateListener listener=new PhoneStateListener(){ @Overridepublic void onCallStateChanged(int state, String incomingNumber) {// TODO Auto-generated method stub//state 目前狀態 incomingNumber,貌似沒有去電的APIsuper.onCallStateChanged(state, incomingNumber);switch(state){case TelephonyManager.CALL_STATE_IDLE:System.out.println("掛斷");break;case TelephonyManager.CALL_STATE_OFFHOOK:System.out.println("接聽");break;case TelephonyManager.CALL_STATE_RINGING:System.out.println("響鈴:來電號碼"+incomingNumber);//輸出來電號碼break;}} };}
要在AndroidManifest.xml註冊廣播接收器:
123456 |
<receiver android:name=".PhoneReceiver"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"/><action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> |
還要添加許可權:
12 |
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission> |
<