Android入門:廣播接收者應用(電話攔截器)
阿新 • • 發佈:2019-02-11
一、電話攔截器應用說明
在我們輸入完電話號碼並撥打電話時,系統會發出一個有序廣播(action="android.intent.action.NEW_OUTGOING_CALL"),並且預計會發送給電話撥號器應用的廣播接收者,但是我們可以設定一個優先順序更高的攔截器廣播接收者(android:priority="1000"),使得在撥號器的廣播接收者收到電話之前將電話清空,如圖所示:
由於此應用應該比較隱蔽,因此需要開機自啟動,當開機自啟動時,系統會發出一個廣播,啟用滿足條件的元件(action="android.intent.action.BOOT_COMPLETED");
二、程式碼實現
AndroidManifest.xml
- <uses-permissionandroid:name="android.permission.PROCESS_OUTGOING_CALLS"/><!-- 外界撥打許可權 -->
- <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/><!-- 接收開機廣播 -->
- <application
- android:icon="@drawable/ic_launcher"
-
android:label
- <receiverandroid:name=".PhoneBroadcastReceiver">
- <intent-filterandroid:priority="1000">
- <actionandroid:name="android.intent.action.NEW_OUTGOING_CALL"/>
- <actionandroid:name="android.intent.action.BOOT_COMPLETED"/>
-
</
- </receiver>
- </application>
PhoneBroadcastReceiver.java
- package com.xiazdong.phonelistener;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- publicclass PhoneBroadcastReceiver extends BroadcastReceiver {
- @Override
- publicvoid onReceive(Context context, Intent intent) {
- if("5556".equals(this.getResultData())) this.setResultData(null); //如果電話是5556,則清空,不讓他撥打
- }
- }