Android電話廣播監聽

public class PhoneReceiver extends BroadcastReceiver {

	private static final String TAG = PhoneReceiver.class.getSimpleName();

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		if (intent == null) {
			return;
		}
		
		/*
		 * String number = getResultData();
         *  if("123456".equals(number)){
         *     setResultData(null);//掛斷
         *  }else{
         *     number = "12593"+ number; //其他,則加區號
         *     setResultData(number);
         *   }
        */
		
		if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
			Log.i(TAG, "去電");
		} else {
			TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
			tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
			// 設置一個監聽器
		}
	}

	PhoneStateListener listener = new PhoneStateListener() {

		@Override
		public void onCallStateChanged(int state, String incomingNumber) {
			// TODO Auto-generated method stub
			super.onCallStateChanged(state, incomingNumber);
			switch (state) {
			case TelephonyManager.CALL_STATE_IDLE:
				break;
			case TelephonyManager.CALL_STATE_OFFHOOK:
				break;
			case TelephonyManager.CALL_STATE_RINGING:
				// 輸出來電號碼
				Log.i(TAG, "來電:來電號碼:" + incomingNumber);
				break;
			}
		}
	};
}

AndroidManifest.xml註冊廣播接收器

<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>

添加權限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章