KitKat系統開放了短信權限,增加了“默認短信”的概念,新特性如下:
新增Intent
新增了兩個intent:SMS_DELIVER_ACTION 和 WAP_PUSH_DELIVER_ACTION,分別對應新短信和新彩信的到來。
在4.4之前,新短信和新彩信到來時的intent爲 SMS_RECEIVED_ACTION 和 WAP_PUSH_RECEIVED。它們在4.4中仍被保留。
這就是說,在一條新短信到來時,系統會發出兩個廣播:SMS_DELIVER_ACTION和 SMS_RECEIVED_ACTION
默認短信應用
用戶可以從系統或第三方短信應用中選擇一個作爲“默認短信應用”:
1. 只有默認短信應用才能接收SMS_DELIVER_ACTION 和 WAP_PUSH_DELIVER_ACTION廣播
2. 非默認短信應用也可以通過接收 SMS_RECEIVED_ACTION廣播來監聽新短信的到來並獲得新短信的內容
3. 只有默認短信應用才能將收到的短信或彩信寫入系統短信數據庫,非默認短信應用試圖寫入系統短信數據庫會失敗並且沒有任何提示。
官方tips:要區分這兩個短信廣播,可以想象成SMS_RECEIVED_ACTION只是簡單地說“嘿,系統接收到一條短信”而SMS_DELIVER_ACTION卻是說“系統傳遞給你的應用一條短信,因爲你是系統默認的短信應用”。
默認短信應用有哪些權限
1. 監聽新短信的到來並獲得新短信的內容,並將其寫入系統短信數據庫
2. 發送短信和彩信,並將其寫入系統短彩信數據庫
非默認短信應用失去了哪些權限
1. 寫系統短信數據庫(會影響短信備份恢復、收短信等功能)
2. 終止一條新短信到來的廣播(會影響短信攔截功能)
非默認短信應用還剩下哪些權限
1. 像上面說過的那樣,監聽新短信的到來並獲得新短信的內容
2. 註冊了SEND_SMS權限的話,可以發送短信,且發送的短信會自動被寫入系統短信數據庫(彩信不會被自動寫入)