成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于短信黑名單 BroadCast

移動開發 Android
BroadCast Receiver顧名思義是指廣播接受者,它和時間處理機制類似,只不過事件吃力機制是程序組件級別的,而廣播時間處理機制是系統級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還卡哇伊通過使用sendBroadCast ()來發起一個系統級別對事件廣播來傳遞信息,我們可以在你的應用程序中實現BroadCast Receiver來堅挺和相應這些廣播的Intent。

看到Android中有關Broadcast Receiver組件方面的東西,廣播被分為兩種不同的類型:“普通廣播(Normal broadcasts)”和“有序廣播(Ordered broadcasts)”。普通廣播是完全異步的,可以在同一時刻(邏輯上)被所有接收者接收到,消息傳遞的效率比較高,但缺點是:接收者不能將處理結果傳遞給下一個接收者,并且無法終止廣播Intent的傳播;然而有序廣播是按照接收者聲明的優先級別,被接收者依次接收廣播。如:A的級別高于B,B的級別高于C,那么,廣播先傳給A,再傳給B,***傳給C 。優先級別聲明在intent-filter元素的android:priority屬性中,數越大優先級別越高,取值范圍:-1000到1000,優先級別也可以調用IntentFilter對象的setPriority()進行設置 。有序廣播的接收者可以終止廣播Intent的傳播,廣播Intent的傳播一旦終止,后面的接收者就無法接收到廣播。另外,有序廣播的接收者可以將數據傳遞給下一個接收者,如:A得到廣播后,可以往它的結果對象中存入數據,當廣播傳給B時,B可以從A的結果對象中得到A存入的數據。

Context.sendBroadcast() 發送的是普通廣播,所有訂閱者都有機會獲得并進行處理。

Context.sendOrderedBroadcast() 發送的是有序廣播,系統會根據接收者聲明的優先級別按順序逐個執行接收者,前面的接收者有權終止廣播(BroadcastReceiver.abortBroadcast()),如果廣播被前面的接收者終止,后面的接收者就再也無法獲取到廣播。對于有序廣播,前面的接收者可以將數據通過setResultExtras(Bundle)方法存放進結果對象,然后傳給下一個接收者,下一個接收者通過代碼:Bundle bundle = getResultExtras(true))可以獲取上一個接收者存入在結果對象中的數據。

系統收到短信,發出的廣播屬于有序廣播。如果想阻止用戶收到短信,可以通過設置優先級,讓你們自定義的接收者先獲取到廣播,然后終止廣播,這樣用戶就接收不到短信了。

因此,可以用廣播來實現一個黑名單的功能:

  1. package com.broadcastreceiver;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.telephony.SmsMessage;  
  7. import android.util.Log;  
  8. public class FirstBroadCastReceiver extends BroadcastReceiver{  
  9.         @Override  
  10.         public void onReceive(Context context, Intent intent) {  
  11.                 // TODO Auto-generated method stub  
  12.                 if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){  
  13.                         Bundle bundle = intent.getExtras();  
  14.                         StringBuilder phoneNum = new StringBuilder();  
  15.                         //通過pdus可以獲得接收到的所有信息  
  16.                         Object[] objArray = (Object[]) bundle.get("pdus");  
  17.                         //構建短信對象array,并依據收到的對象長度來創建array的大小  
  18.                         SmsMessage[] messages = new SmsMessage[objArray.length];  
  19.                         for (int i = 0; i < objArray.length; i++)  
  20.                         {  
  21.                                 messages[i] = SmsMessage  
  22.                                                 .createFromPdu((byte[]) objArray[i]);  
  23.                         }  
  24.                         //將送來的短信合并自定義信息于StringBuilder中  
  25.                         for (SmsMessage currentMessage : messages)  
  26.                         {  
  27.                                 //獲得發送短信的電話號碼  
  28.                                 phoneNum.append(currentMessage.getDisplayOriginatingAddress());  
  29.                         }  
  30.                         //這里可以添加數據庫查詢語句,用來查詢發送短信的號碼是否在黑名單中  
  31.                         //注意,在onReceive()方法最長運行時間是10秒,如果超過10秒Android會認為該程序無響應  
  32.                         //所以在BroadcastReceiver里不能做一些比較耗時的操作,否側會彈出ANR(Application No Response)的對話框  
  33.                         //如果需要完成一項比較耗時的工作,應該通過發送Intent給Service,由Service來完成  
  34.                         //這里不能使用子線程來解決,因為 BroadcastReceiver的生命周期很短,子線程可能還沒有結束BroadcastReceiver就先結束了  
  35.                         //BroadcastReceiver一旦結束,此時BroadcastReceiver的所在進程很容易在系統需要內存時被優先殺死,  
  36.                         //因為它屬于空進程(沒有任何活動組件的進程)。如果它的宿主進程被殺死,那么正在工作的子線程也會被殺死。  
  37.                         //所以采用子線程來解決是不可靠的。  
  38.                         if(phoneNum.toString().equals("254")){  
  39.                                 //如果在黑名單中,就終止廣播,這樣,系統就不會有任何提示,用戶也就收不到短信了  
  40.                                 abortBroadcast();  
  41.                                 Log.e("msg", "sucess!!");  
  42.                         }else  
  43.                               Log.e("msg","fail!");  
  44.                 }  
  45.         }  

既然要獲取短信號碼,就涉及到讀短信的權限,同時intent-filter元素的android:priority屬性表示優先級,越大說明優先級越高。

下面是AndroidManifest.xml代碼:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.       package="com.broadcastreceiver" 
  4.       android:versionCode="1" 
  5.       android:versionName="1.0"> 
  6.         <uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
  7.         <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  9.         <activity android:name=".MainBroadCastReceiver" 
  10.                   android:label="@string/app_name"> 
  11.             <intent-filter> 
  12.                 <action android:name="android.intent.action.MAIN" /> 
  13.                 <category android:name="android.intent.category.LAUNCHER" /> 
  14.             </intent-filter> 
  15.         </activity> 
  16.         <receiver android:name=".FirstBroadCastReceiver"> 
  17.             <intent-filter android:priority="1000"> 
  18.                 <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> 
  19.             </intent-filter> 
  20.         </receiver> 
  21.     </application> 
  22. </manifest 

【編輯推薦】

Android線程帶給我們的好處

Android單元測試與日志輸出

Android網絡連接處理學習筆記

Android 2.2系統的十個實用小技巧

Android Activity和Intent機制學習筆記

責任編輯:zhaolei 來源: 開發者社區
相關推薦

2011-01-21 17:53:44

Zimbra

2015-06-04 11:11:15

2013-08-27 10:56:24

2010-11-11 13:20:41

2010-05-24 13:36:11

2018-06-10 09:04:28

2009-10-29 08:39:14

Windows 7系統激活

2019-07-29 08:41:33

算法黑名單ip

2011-03-18 13:14:01

2011-07-28 11:10:58

2010-01-21 11:44:41

垃圾郵件實時黑名單技術

2009-05-14 09:11:49

歐盟反壟斷黑名單

2010-11-01 09:17:21

超級黑名單騰訊QQ360安全中心

2012-11-23 17:13:59

2017-07-18 09:15:23

Python Craw數據爬取

2014-06-06 09:38:22

工信部應用軟件黑名單

2012-11-23 10:15:06

2013-02-25 09:37:38

2020-10-12 09:10:09

黑名單

2018-03-12 10:45:41

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品人伦一区二区三区蜜桃网站 | wwwsihu| 国产9久 | 久久成人av电影 | 成人在线国产 | 国产精品久久久久久吹潮 | 久久久久久久国产 | 成人综合伊人 | 国产亚洲一区二区三区 | 91久久国产综合久久 | 欧美久久一区 | 精品视频在线免费观看 | 中文在线a在线 | 国产成人啪免费观看软件 | 国产一级一级毛片 | 亚洲一区二区三区视频 | 日韩一级黄色片 | 黄色在线免费观看视频网站 | 麻豆一区二区三区 | 成人做爰www免费看视频网站 | 大象视频一区二区 | 国产丝袜一区二区三区免费视频 | 成年人免费在线视频 | 成人一级毛片 | 国产一级久久久久 | 国产在线观看一区二区三区 | 在线视频日韩精品 | 成人免费视频网址 | 在线中文字幕av | 天堂久久网| 亚洲综合区 | 成人国内精品久久久久一区 | 美女毛片免费看 | 久久综合入口 | 国产三级一区二区 | 99reav| 国产欧美一级二级三级在线视频 | 久久久www成人免费无遮挡大片 | 久久人人爽人人爽人人片av免费 | 久久免费国产 | 精品国产乱码久久久久久影片 |