Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android4.4以上獲取來信內容(親測6.0可用)

Android4.4以上獲取來信內容(親測6.0可用)

編輯:關於Android編程

思路:使用內容觀察者監聽短信數據庫。

以下代碼在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();
        }
    }

}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved