如何注册短信数据库变更?
我试过了:
mCursor = mActivity.getContentResolver().query(Sms.CONTENT_URI, new String[] {
Sms.ADDRESS
}, null, null, null);
mCursor.registerDataSetObserver(mydataSetObserver);其中mydataSetObserver的实现方式如下:
private class MyDataSetObserver extends DataSetObserver {
public void onChanged() {
System.out.println ("1");
}
public void onInvalidated() {
System.out.println ("2");
}
}但当我尝试在模拟器中发送短信时,MyDataSetObserver从未被调用过。
你能告诉我为什么吗?
谢谢。
发布于 2009-12-28 02:49:31
听起来你想要做的就是能够修改设备上的SMS数据库。
我过去的方法是在AndroidManifest.xml中使用标签。我创建的应用程序需要使用READ_SMS权限和READ_CONTACTS权限,但是获得写入数据库的权限也是以同样的方式完成的。
我在AndroidManifest.xml文件中使用以下标记定义了这些所需的权限:
WRITE_SMS包含在您可以使用的list of permissions中,它将为您提供所需的功能。
请注意:由于我是一个新用户,StackOverflow只允许我张贴这篇文章的一个超链接,我试图包括更多的信息,但无法做到。如果需要,请访问安卓开发人员网站,搜索AndroidManifest.xml文件并查看更多信息。
发布于 2009-08-17 07:10:15
DataSetObserver%s仅观察向其注册的DataSetObservable%s。您的MyDataSetObserver已注册到您的mCursor,并将在mCursor更改时(例如,在requery之后)得到通知,但不会在内容由另一个进程(如消息传递应用程序)写入时通知您。
不幸的是,目前还没有很好的方法来监听发送的文本消息的事件,最好的替代方案似乎是轮询content://sms/sent,可能使用ContentObserver。
This问题是相关的。
https://stackoverflow.com/questions/1285720
复制相似问题