溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

內(nèi)容觀察者(一個簡單的手機短信竊聽器)

發(fā)布時間:2020-07-14 01:47:46 來源:網(wǎng)絡(luò) 閱讀:652 作者:秋寒526 欄目:開發(fā)技術(shù)

一丶內(nèi)容觀察者
  * 在內(nèi)容提供者中要通知內(nèi)容發(fā)生了變化
         getContext().getContentResolver().notifyChanges(uri,null) ; //null表示沒有固定的接收者
  * 在其他應(yīng)用中寫一個觀察者,并注冊一個實例
         getContentResolver().registerContentObserver(uri,true,Observer) ; //uri觀察的主機數(shù)據(jù),true表示只要主機匹配即可,Observer表示具體的觀察者
示例: 短信竊聽器

1.先寫一個MyObserver繼承ContentObserver,重寫onchange方法:
public class MyObserver extends ContentObserver {
    private Context context;
    public MyObserver(Context context, Handler handler) {
        super(handler);
        this.context = context;
    }
    @Override
    public void onChange(boolean selfChange, Uri uri) {
        super.onChange(selfChange, uri);

        // 短信表中的字段read : 1代表已經(jīng)讀了,0代表的是未讀
        // 短信表中的字段type : 2代表監(jiān)測的機子發(fā)出去的信息,1代表的是監(jiān)測的機子接收到的信息

        // 拿到內(nèi)容解析器
        ContentResolver recolver = context.getContentResolver();
        // 查詢檢測的機子的系統(tǒng)短信
        Cursor cursor = recolver.query(uri, new String[] { "address", "body", "type", "date" },
                null, null, "date desc");
        cursor.moveToFirst() ;
        //拿到短信信息
        String address = cursor.getString(0) ;
        String body = cursor.getString(1) ;
        int type = cursor.getInt(2) ;
        long date = cursor.getLong(3) ;
        
        if(type == 2){
            String d = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date(date)) ;
            System.out.println("檢測的機子發(fā)送了信息: 地址:" + address + " 內(nèi)容:" + body + "時間 :" + d );
            Toast.makeText(context, "檢測的機子發(fā)送了信息: 地址:" + address + " 內(nèi)容:" + body + "時間 :" + d, 0).show() ;
        }
        
        if(type == 1){
            String d = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date(date)) ;
            System.out.println("檢測的機子接收信息: 地址:" + address + " 內(nèi)容:" + body + "時間 :" + d );
            Toast.makeText(context, "檢測的機子接收了信息: 地址:" + address + " 內(nèi)容:" + body + "時間 :" + d, 0).show() ;
        }      
    }
}

2.在其他應(yīng)用中寫一個觀察者,并注冊一個實例

        Uri uri = Uri.parse("content://sms") ;//監(jiān)測的主機
        getContentResolver().registerContentObserver(uri, true, new MyObserver(this, new Handler())) ;

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI