如果本机(手机)中存在 3 条未读 SMS 消息,并且用户已阅读其中一条 SMS。如何识别在我们的应用程序中读取了哪些短信(从本机)。
目前我正在使用 ContentObserver ,当用户从本机(电话)读取短信时,会调用 onChange() 方法。
我能够获取所有未读的短信:
Cursor cursor = this.getContentResolver().query(Uri.parse("content://sms/"), null, "read = 0", null, null);
如何识别从本机(电话)读取了哪些短信。任何帮助或指导将不胜感激。
在 Nexus 4(Android 4.3) - API 18) 中,如果 Android Native Sms Client 中两条未读短信(属于两个不同的发件人)的通知(在设备状态栏中),用户单击该通知,则会调用 onChange(context, uri)在我的应用程序中,我尝试获取已读短信的ID:
String id = uri.getLastPathSegment();
对于上述情况,“收件箱”作为“id”的值出现。但是,当用户从 Android Native Sms Client 中读取任何 SMS 时,不会调用 onChange(context, uri) 方法。
在 Samsung Galaxy S3(Android 4.1.2 - API 16) 中,在任何一种情况下都不会调用 onChange(context, uri)(即,如果用户从 Native 读取短信或用户单击通知(在设备状态栏中) )Android Native Sms Client 中的两条未读短信(属于两个不同的发件人)。
(在 API 16 中,当本机收到新短信时,将调用 onChange(context, uri),并且“id”的值等于该短信的唯一 ID - 在 Nexus 4(Android 4.3) 上测试)
注意:此处,“来自本机”是指“来自设备的默认 SMS 客户端”。