Android讀取簡訊(短信)(讀取SMS)[Android]

簡訊某些地方稱短信

英文稱SMS


權限

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



1.服務監聽收到簡訊的事件



要注意的是解析內容的地方改這段
可以取得寄件者和信件內容
LOG QQQ那邊



      @Override
    public void onReceive(Context context, Intent intent) {
        Bundle data = intent.getExtras();
        Object[] pdus = new Object[0];
        if (data != null) {
            pdus = (Object[]) data.get("pdus"); // the pdus key will contain the newly received SMS
        }
        if (pdus != null) {
            for (Object pdu : pdus) {
                SmsMessage[] messages = new SmsMessage[pdus.length];
                StringBuilder content = new StringBuilder();
                for (int i = 0; i < pdus.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                    content.append(messages[i].getMessageBody());
                }
                String number = messages[0].getOriginatingAddress();
                Log.e("QQQ","AA1:"+content);
                Log.e("QQQ","AA2:"+number);
                if (mListener!=null)
                    mListener.onOTPReceived("Extracted OTP");
                break;
            }
        }
    }





2.讀取所有的簡訊內容
要注意的是person的話有可能會得到空值,其他有些欄位也有機會得到空值
有用到的要加判斷不為空

 //讀簡訊
    private Uri SMS_INBOX = Uri.parse("content://sms/");
    public void getSmsFromPhone() {
        ContentResolver cr = getContentResolver();
        String[] projection = new String[] { "body" , "address", "person", "date",};//"_id", "address", "person",, "date", "type
//        String where = " address = '1066321332' AND date >  "
//                + (System.currentTimeMillis() - 10 * 60 * 1000);
//        Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc");
        Cursor cur = cr.query(SMS_INBOX, projection,null , null, "date desc");

        if (null == cur)
            return;
        while (cur.moveToNext()) {
            String number = cur.getString(cur.getColumnIndex("address"));//手机号
//            String name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表
            String body = cur.getString(cur.getColumnIndex("body"));
            Log.e("QQQ1",body);
//            Log.e("QQQ2",name);
            Log.e("QQQ3",number);

        }
    }

留言

此網誌的熱門文章