Android Marshmallow上的内容提供商结果中缺少短信

自从Samsung S7问世以来,一些文本消息丢失并且从未显示在内容:// sms提供程序URI中。 我注意到在同一个运营商(在这种情况下是T-Mobile)上的多个三星设备(S6和/或S7)之间,但可能不限于此。 这些短信显示在默认的股票消息应用程序中,但我找不到如何访问它们。 请记住,通过该内容提供商,我可以很好地收到97%的短信,但最后3%的人不在我身边。

Uri uri = Uri.parse("content://sms/"); String[] projection_sms = { "*" }; Cursor cursor = getContentResolver().query(uri, projection_sms, "", null, null); 

我也在SIM卡内查看是否有丢失的短信,但没有发现任何内容:

 Uri uri = Uri.parse("content://sms/icc"); 

我也经历了所有彩信,发现他们也不在那里。

  

我只想在这种情况下阅读短信,根据Android文档,您只需要上述权限即可从SMS / MMS数据库中读取。 我意识到在KitKat中有一个更改允许应用程序替换默认的股票应用程序,但在这种特殊情况下我只想阅读短信。

因此,如果这些短信不在数据库中的正确位置且不在SIM卡中,那么它们在地球上(或者我应该在Android中说)会是什么?

似乎缺少的消息实际上不是SMS,而是RCS消息。 这些不存储在SMS提供程序中,因此不会从对它的任何查询返回,尽管支持RCS的设备上的消息传递应用程序可能无缝地一起显示它们。 这可以解释为什么您的查询结果似乎不完整。

RCS(富通信服务)基本上是增强的SMS / MMS,除了常规的文本消息之外,还提供实时一对一和群聊,video呼叫,内容共享等function。 目前,Android中没有标准API用于此,但据报道谷歌正在采用此作为SMS / MMS的最终替代品。 但是,我无法找到关于如何集成或部署它的官方消息。

并非每个运营商都提供RCS,而且那些运营商拥有专用的专有应用和API来处理它。 当然,对于每个运营商/制造商来说,这些都会有所不同,甚至品牌也会有很大差异。 大多数人称之为joyn ,而T-Mobile将其称为高级消息 。 随着RCS变得越来越普遍,它应该变得更加标准化,但是当前在您的应用程序中支持RCS将需要专门的组件和设置。