相關代碼 下載 http://download.csdn.net/detail/mwq30123/7368545
1.短信有權限也不可以寫入的問題
<uses-permission android:name="android.permission.WRITE_SMS" />
原因:contentprovider中數據訪問 多了一步校驗
if (enforceReadPermission(callingPkg, uri) != AppOpsManager.MODE_ALLOWED) {
……….. }
AppOpsManager中定義了OP_WRITE_SMS默認值是MODE_IGNORED
解決: AppOpsManager中定義了相應的操作控制MODE_IGNORED,MODE_ALLOWED,以及修改Op_mode的hide方法setMode,需要提供當前的PkgName和PkgUserID。
一次修改,終生有效。
SMS_RECEIVED_ACTION 廣播,誰都可以收到,但不可中斷
新增SMS_DELIVER_ACTION,只能由默認短信應用接收到
3.短信攔截問題
4.2以前的短信攔截,通過SMS_RECEIVED_ACTION廣播,可以接收和解析短信,但是不能阻止短信被寫入到SMS DB中
解決方案
廣播接收到時間:
time--1390795992234--
onReceive : SMS_RECEIVED
DB中短信記錄時間
_ID 20
ADDRESS 18651660481 /
DATE 1390795992270 /
DATE_SENT 1390795992000 /
BODY …
一:根據time,sender,body去DB刪除此條短信
二:Service中註冊Observe監聽Sms Content Onchanged 讀取到最新的一條,執行相應的解析和刪除操作。