【问题标题】:SMS missing from content provider results on Android MarshmallowAndroid Marshmallow 上的内容提供商结果中缺少 SMS
【发布时间】:2016-06-27 00:28:29
【问题描述】:

自三星 S7 推出以来,一些文本消息丢失并且从未显示在 content://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 文档,您只需要上述权限即可从短信/彩信数据库中读取。我意识到在 KitKat 中进行了一项更改,允许应用替换默认的股票应用,但在这种特殊情况下,我只想阅读 SMS。

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

【问题讨论】:

  • 缺少哪些邮件?您的非默认应用程序只会收到 sent 和 inbox 消息,因此如果它是 draft、failed 等。你没有得到,这就是原因。
  • 缺少的短信是收到的短信,应该在收件箱里,也可以在content://sms/里找到。这些消息在收到的默认应用程序中显示,但我无法从任何地方访问这些消息。
  • 他们有没有其他共同点?就像,他们真的都老了吗?还是只是随机的?另外,您确定这些消息是通过 SMS 发送的,而不是 RCS 之类的吗?某些应用程序在显示消息时会无缝结合这些内容,但 RCS 不会存储在 SMS Provider 中。显然,T-Mobile 调用 RCS 高级消息传递,顺便说一句。
  • 嗯,哇,我认为你是绝对正确的。我什至不知道 RCS。非常感谢! Google 是否允许访问 RCS 消息?还是为个别运营商专有?
  • 是的,这会因运营商而异,atm。目前还没有用于 RCS 的标准 API,AFAIK,尽管它最终可能会出现在 SDK 中(如果它不在 N 中;不知道,我有点落后于前沿),因为我上次听说,谷歌一直在推动它替换短信。

标签: java android sms provider mms


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2012-06-05
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多