歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android之BroadcastReceiver 廣播接受者(短信竊聽實例)

BroadcastReceiver用於接收廣播Intent,廣播Intent的發送是通過調用Context.sendBroadcast()、Context.sendOrderedBroadcast()來實現的。通常一個廣播Intent可以被訂閱了此Intent的多個廣播接收者所接收

0.要實現一個廣播接收者方法如下

(1)第一步:繼承BroadcastReceiver,並重寫onReceive()方法

  1. public class IncomingSMSReceiver extends BroadcastReceiver  
  2. {  
  3.   @Override public void onReceive(Context context, Intent intent){ }  
  4. }  
 
  1. public class IncomingSMSReceiver extends BroadcastReceiver  
  2. {  
  3.   @Override public void onReceive(Context context, Intent intent){ }  
  4. }  

(2)第二步:訂閱感興趣的廣播Intent,訂閱方法有兩種

第一種:使用代碼進行訂閱

 
  1. IntentFilter filter = new IntentFilter("Android.provider.Telephony.SMS_RECEIVED");  
  2. IncomingSMSReceiver receiver = new IncomingSMSReceiver();  
  3. registerReceiver(receiver, filter);  
 
  1. IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");  
  2. IncomingSMSReceiver receiver = new IncomingSMSReceiver();  
  3. registerReceiver(receiver, filter);  

第二種:在AndroidManifest.xml文件中的<application>節點裡進行訂閱:

 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  4.     </intent-filter>  
  5. </receiver>  
 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  4.     </intent-filter>  
  5. </receiver>  

1.除了短信到來廣播Intent,Android還有很多廣播Intent,如:開機啟動、電池電量變化、時間已經改變等廣播Intent。

(1)接收電池電量變化廣播Intent ,在AndroidManifest.xml文件中的<application>節點裡訂閱此Intent:

 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.intent.action.BATTERY_CHANGED"/>  
  4.     </intent-filter>  
  5. </receiver>  
 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.intent.action.BATTERY_CHANGED"/>  
  4.     </intent-filter>  
  5. </receiver>  

(2)接收開機啟動廣播Intent,在AndroidManifest.xml文件中的<application>節點裡訂閱此Intent:

 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.intent.action.BOOT_COMPLETED"/>  
  4.     </intent-filter>  
  5. </receiver>  
 
  1. <receiver android:name=".IncomingSMSReceiver">  
  2.     <intent-filter>  
  3.          <action android:name="android.intent.action.BOOT_COMPLETED"/>  
  4.     </intent-filter>  
  5. </receiver>  

並且要進行權限聲明:

 
  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  
 
  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  
Copyright © Linux教程網 All Rights Reserved