如何注册SMS数据库更改?
如何注册SMS数据库更改?
我试过了:
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"); } }
但是当我尝试在模拟器中发送SMS消息时,MyDataSetObserver永远不会被调用。
你能告诉我为什么吗?
谢谢。
听起来你要做的就是能够对设备上的SMS数据库进行更改。
我过去的方式是使用AndroidManifest.xml中的标签。 我创建的应用程序需要使用READ_SMS权限以及READ_CONTACTS权限,但是获得写入数据库的权限将以相同的方式完成。
我使用以下标记在AndroidManifest.xml文件中定义了这些所需的权限:
您可以使用的权限列表包括WRITE_SMS,它应该为您提供所需的function。
请注意:因为我是新用户,StackOverflow只允许我发布此post的一个超链接,我尝试包含更多信息但是无法这样做。 请访问android开发者网站并搜索AndroidManifest.xml文件,如果需要,请查看更多信息。
DataSetObserver
只观察它们注册的DataSetObservable
。 您的MyDataSetObserver
已向您的mCursor
注册,并将在mCursor
更改时(例如,在重新requery
之后)通知,但不会在内容由其他进程(如Messaging应用程序)写入时通知。
不幸的是,目前没有好的方法来监听发送短信的事件,最好的选择似乎是轮询content://sms/sent
,可能使用ContentObserver
。
这个问题是相关的。