首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 監聽第三方應用發送短信:ContentObserver 監聽 SMS 數據庫變化

     編輯:程式設計綜合問答

核心原理

所有應用發送短信(包括 SmsManager.sendTextMessage)最終都會寫入系統 SMS Provider(content://sms/sent)。

實現方案

  1. 註冊 ContentObserver 監聽 content://sms URI 變化
  2. onChange 回調中查詢最新 type=2 (SENT) 記錄
  3. 提取號碼、內容、時間,彈出提示或記錄日誌

代碼骨架

public class SmsObserver extends ContentObserver {
    public SmsObserver(Handler handler) { super(handler); }
    @Override
    public void onChange(boolean selfChange, Uri uri) {
        Cursor c = context.getContentResolver().query(Uri.parse("content://sms/sent"), 
            new String[]{"address", "body", "date"}, null, null, "date DESC");
        if (c.moveToFirst()) {
            String phone = c.getString(0);
            String body = c.getString(1);
            // 處理業務邏輯
        }
        c.close();
    }
}
// 在 Service/Application 中註冊
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new SmsObserver(new Handler()));

權限

<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/> 

此法不需 Root,覆蓋所有發送途徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved