歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android入門:廣播接收者應用(電話攔截器)

Android入門:廣播接收者應用(電話攔截器)

日期:2017/3/1 10:15:58   编辑:Linux編程

一、電話攔截器應用說明

在我們輸入完電話號碼並撥打電話時,系統會發出一個有序廣播(action="Android.intent.action.NEW_OUTGOING_CALL"),並且預計會發送給電話撥號器應用的廣播接收者,但是我們可以設置一個優先級更高的攔截器廣播接收者(android:priority="1000"),使得在撥號器的廣播接收者收到電話之前將電話清空,如圖所示:

由於此應用應該比較隱蔽,因此需要開機自啟動,當開機自啟動時,系統會發出一個廣播,激活滿足條件的組件(action="android.intent.action.BOOT_COMPLETED");

二、代碼實現

AndroidManifest.xml

  1. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> <!-- 外界撥打權限 -->
  2. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <!-- 接收開機廣播 -->
  3. <application
  4. android:icon="@drawable/ic_launcher"
  5. android:label="@string/app_name" >
  6. <receiver android:name=".PhoneBroadcastReceiver">
  7. <intent-filter android:priority="1000">
  8. <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
  9. <action android:name="android.intent.action.BOOT_COMPLETED"/>
  10. </intent-filter>
  11. </receiver>
  12. </application>

PhoneBroadcastReceiver.java

  1. package com.xiazdong.phonelistener;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. public class PhoneBroadcastReceiver extends BroadcastReceiver {
  6. @Override
  7. public void onReceive(Context context, Intent intent) {
  8. if("5556".equals(this.getResultData())) this.setResultData(null); //如果電話是5556,則清空,不讓他撥打
  9. }
  10. }
Copyright © Linux教程網 All Rights Reserved