ContentObserver用于SMS

时间:2012-07-01 11:23:33

标签: android sms contentobserver

我正在尝试提取已发送的短信。我知道没有BroadcastReciver。所以我发现我可以使用ContentObserver来监听数据库中的更改。

我该如何实现?我的目标是只获取发送的新短信并通过数据库上的POST发送

由于

2 个答案:

答案 0 :(得分:3)

是的,可以通过将ContentObserver注册到内容来收听新短信:// sms /

在这篇文章中看到我的回答我们如何将ContentObserver注册到content:// sms /

Practical way to find out if SMS has been sent

您也可以从这里下载工作示例

Contentovserver

答案 1 :(得分:1)

这是执行此操作的代码片段。关键是使用仅查找“type =传出消息”的选择。

此外,由于任何更改都可以触发内容数据库,因此请跟踪(以某种方式)已处理的内容。

int THREAD_ID = 0, ADDRESS = 1, DATE = 2, TYPE = 3, BODY = 4, INCOMING = 1, OUTGOING = 2, UNKNOWN = -1;

String[] smsProjection = new String[] {"thread_id", "address", "date", "type", "body"};

ContentResolver cr = context.getContentResolver();

Cursor cursor = context.getContentResolver().query(uri, smsProjection, "type = ? AND date > ?",new String[]{Integer.toString(OUTGOING), Long.toString(lastOutgoingSmsTime)}, null);