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

时间:2016-06-27 00:28:30

标签: java android sms provider mms

自从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");

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

<uses-permission android:name="android.permission.READ_SMS" />

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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