Android4.4以上の受信内容(親測定6.0利用可能)

2893 ワード

考え方:コンテンツ観察者を用いてメールデータベースを傍受する.
次のコードはActivityで呼び出されます.
SmsContent content = new SmsContent(new Handler());
//               this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);

カスタムメールデータベースオブザーバー:SmsContent(managedQueryはコンテキスト内のメソッド)
/**
 *        
 */
class SmsContent extends ContentObserver {

    private Cursor cursor = null;

    public SmsContent(Handler handler) {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {

        super.onChange(selfChange);
        //             
        cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read", "body"},
                " address=? and read=?", new String[]{"10010", "0"}, "_id desc");// id  ,   date    ,       ,         
        if (cursor != null && cursor.getCount() > 0) {
            ContentValues values = new ContentValues();
            values.put("read", "1");        //         
            cursor.moveToNext();
            int smsbodyColumn = cursor.getColumnIndex("body");
            String smsBody = cursor.getString(smsbodyColumn); //         

        }

        //  managedQuery   ,      close()  ,    Android 4.0+    ,      
        if (Build.VERSION.SDK_INT < 14) {
            cursor.close();
        }
    }

}