当前位置: 首页 > 面试题库 >

Android棉花糖上内容提供商结果中缺少短信

贺桐
2023-03-14
问题内容

自三星S7推出以来,缺少一些短信,它们从未显示在content:// sms提供程序URI中。我注意到在同一运营商(在本例中为T-
Mobile)上的多个Samsung设备(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");

我也浏览了所有MMS,发现它们也不在其中。

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

在这种情况下,我只想阅读SMS,根据Android文档,您只需要上述权限即可从SMS /
MMS数据库中读取。我意识到KitKat中进行了一项更改,允许应用程序替换默认的库存应用程序,但是在这种情况下,我只想阅读SMS。

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


问题答案:

似乎丢失的消息实际上不是SMS,而是RCS消息。这些内容未存储在SMS
Provider中,因此不会向其返回任何查询,尽管支持RCS的设备上的消息传递应用程序可能会无缝地将它们全部显示在一起。这可以解释为什么您的查询结果似乎不完整。

RCS(Rich Communication Services)本质上是增强的SMS /
MMS,除了常规的纯文本消息传递外,还提供诸如实时一对一和群聊,视频通话,内容共享等功能。目前,Android中没有用于此的标准API,尽管据报道Google正在采用该API作为最终替代SMS
/ MMS的过程。但是,我对如何将其集成或部署没有任何官方消息。

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



 类似资料:
  • 问题内容: 我在Android 6.0(棉花糖)上遇到了日期格式问题。引发以下异常的代码是我的应用程序用于API请求(“客户端”)的纯Java库(单独构建)。如果相关的话,该库是用Java 1.6构建的……无论如何,这是代码。 … 具有价值; …“修剪”之后是; 该代码自Froyo成立以来一直有效,并且已经过单元测试。除了棉花糖,所有东西都会抛出异常。 偏移量“ 21”是10:59中“ 9”之后的

  • 问题内容: 我正在创建一个可产生现场乐器声音的应用程序,并且计划使用Android棉花糖(6.0版)中的新Midi API。我已经在http://developer.android.com/reference/android/media/midi/package- summary.html上 阅读了软件包概述文档,并且我知道如何生成Midi笔记,但是我仍然不确定:我该怎么办在生成它们的Midi数据

  • 我正在开发一款应用程序,它(至少)有两种不同的软件包名称,因此就Android系统而言,实际上有两种不同的应用程序。该应用程序使用Facebook共享,因此我在清单中声明了提供商: 这是根据Facebook的指示完成的:https://developers.facebook.com/docs/sharing/android 这适用于一个应用程序,但尝试在同一设备上安装第二个应用程序失败,错误INS

  • IntelliJ Android Studio上次更新(2016年1月30日起)支持Java8吗? 我用了一个lambda表达式 注意:我使用的是最后一个API级别

  • 当我运行app时,它在logcat中显示这个 java.lang.SecurityException:权限拒绝:从ProcessRecord{2dd511f 24656:com.marg.pharmanxt/u0a158}(PID=24656,UID=10158)中启动意图{act=android.Intent.action.call dat=tel:xxxxxxxxxcapt=2dd511f 2

  • 问题内容: 我已经成功使用javax.crypto.Cipher.getInstance(“ DESede / CBC / NoPadding”)在Android上通过DESFire卡进行身份验证 。它可以在Android 4到5的多种设备上运行,但是在我更新为6棉花糖(和6.0.1)的Nexus 7上停止了工作。在更新之前,它一直在同一设备上工作。 似乎Cipher的工作方式不同,对于相同的密钥