Android4.4之後傳送或接收簡訊後自動刪除問題
阿新 • • 發佈:2019-02-07
工作需要做一個傳送簡訊後立即刪除的功能,在網上查了大片資料。
把關鍵程式碼貼出來
public void onChange(boolean selfChange) { super.onChange(selfChange); { ContentResolver cr = getContentResolver(); String[] projection = new String[] { "body", "address", "person", "thread_id","_id" }; String where = " date > " + (System.currentTimeMillis() - 10 * 60 * 1000); Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc"); if (null == cur) return; if (cur.moveToNext()) { thread_id = cur.getInt(cur.getColumnIndex("thread_id")); id=cur.getInt(cur.getColumnIndex("_id")); String number = cur.getString(cur.getColumnIndex("address"));// 手機號 String body = cur.getString(cur.getColumnIndex("body")); // mContent.setText(number); // 使用正則表示式分析簡訊內容 Pattern pattern = Pattern.compile("(\\d{6})(\\d{11})"); // 將簡訊分為兩組 String[] num = pattern.split(body); Matcher matcher = pattern.matcher(body); if (matcher.find()) { String res = matcher.group(2);// 獲取簡訊的內容 mGetPhoneNum.setText(res); } } cr.delete(Uri.parse("content://sms/"), "_id="+id,null);// 讀取完簡訊內容後刪除 cur.close(); }
寫好以後真機上測試成功。然後去做另外一個功能。 今天發現簡訊不能自動刪除了,費了一下午找原因,原來是在android 4.4之後新增了一個default sms的機制。給程式所有SMS許可權,但是在虛擬機器上不會提示給許可權。但是在真機上會提示是否給傳送 讀寫簡訊的許可權,如果點選給應用許可權,則仍可以使用此功能。