短信4.4相關AppOpsManager和SmsReceiver-action變化

相關代碼 下載 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。

一次修改,終生有效。


2.短信接收廣播問題

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 讀取到最新的一條,執行相應的解析和刪除操作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章