1. 程式人生 > >Android4.4之後傳送或接收簡訊後自動刪除問題

Android4.4之後傳送或接收簡訊後自動刪除問題

    工作需要做一個傳送簡訊後立即刪除的功能,在網上查了大片資料。

把關鍵程式碼貼出來

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許可權,但是在虛擬機器上不會提示給許可權。但是在真機上會提示是否給傳送 讀寫簡訊的許可權,如果點選給應用許可權,則仍可以使用此功能。