此鏈接可能是有用
http://blog.chinaunix.net/u/9577/showart_1850111.html
我還沒有完全實現它自己,但我已經實現了工作
注意,它不完全記錄,因此很可能在Android的
的未來版本中改變
編輯:
這裏是我實現了自己的代碼的方式:
String url = "content://sms/";
Uri uri = Uri.parse(url);
getContentResolver().registerContentObserver(uri, true, new MyContentObserver(handler));
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = getContentResolver().query(uriSms, null,null,null,null);
Log.d("COUNT", "Inbox count : " + c.getCount());
}
class MyContentObserver extends ContentObserver {
public MyContentObserver(Handler handler) {
super(handler);
}
@Override public boolean deliverSelfNotifications() {
return false;
}
@Override public void onChange(boolean arg0) {
super.onChange(arg0);
Log.v("SMS", "Notification on SMS observer");
Message msg = new Message();
msg.obj = "xxxxxxxxxx";
handler.sendMessage(msg);
Uri uriSMSURI = Uri.parse("content://sms/");
Cursor cur = getContentResolver().query(uriSMSURI, null, null,
null, null);
cur.moveToNext();
String protocol = cur.getString(cur.getColumnIndex("protocol"));
if(protocol == null){
Log.d("SMS", "SMS SEND");
int threadId = cur.getInt(cur.getColumnIndex("thread_id"));
Log.d("SMS", "SMS SEND ID = " + threadId);
getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadId), null, null);
}
else{
Log.d("SMS", "SMS RECIEVE");
int threadIdIn = cur.getInt(cur.getColumnIndex("thread_id"));
getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadIdIn), null, null);
}
}
}
代碼偵聽SMS內容提供程序中的更改。
這是行,如果你想刪除短信
getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadIdIn), null, null);
你要刪除的整個會話刪除的短信,我一直無法直接刪除,最後你會感興趣談話的訊息
這是否刪除單個消息或整個會話?爲什麼SmsMessage msg作爲參數被帶入在方法中的任何地方使用? –