如果本机(电话)中存在 3 条未读短信,并且用户已阅读其中一条短信。如何识别在我们的应用程序中(从本机)读取了哪些 SMS。
目前我正在使用 ContentObserver 并且当用户从本机(电话)读取 SMS 时调用 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) 方法。
在三星 Galaxy S3(Android 4.1.2 - API 16)中,在任何一种情况下都不会调用 onChange(context, uri)(即,如果用户从 Native 读取 SMS 或用户点击通知(在设备状态栏中) ) 用于 Android 原生短信客户端中的两条未读短信(属于两个不同的发件人)。
(在 API 16 中,当在本机中接收到新 SMS 时,会调用 onChange(context, uri) 并且“id”的值等于该 SMS 的唯一 ID - 在 Nexus 4(Android 4.3)上测试)
注意:这里的“来自本机”是指“来自设备的默认短信客户端”。