【问题标题】:How to read RCS messages from android device programmatically如何以编程方式从 android 设备读取 RCS 消息
【发布时间】:2016-08-03 06:46:06
【问题描述】:

我的应用程序基本上将 SMS 和 MMS 备份到云服务器。我使用下面的 URI 从数据库中检索数据。

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


MMS-Uri uri = Uri.parse("content://mms/");

几天前在测试我的应用程序时,我注意到从 SQLite 检索时缺少一些消息(SMS 和 MMS)。在做了一些研究之后,我发现那些是 RCS(富通信服务)消息。现在我的挑战是阅读 RCS 消息(SMS 和 MMS)。 有没有办法在 Android 中读取 RCS(富通信服务)消息? 我需要使用什么 URI 来读取 RCS(富通信服务)消息?

提前致谢。

【问题讨论】:

  • Android 中还没有 RCS 的标准 API。每个制造商/运营商都会有所不同。
  • 嗨,迈克,感谢您的回复。制造商是指手机制造商?如果我想在三星设备中收集 RCS 消息(SMS 和 MMS),那么放置“”权限就足够了?
  • @syam “制造商是指手机制造商吗?” - 是的。 “如果我想收集 RCS 消息(SMS 和 MMS)......” - RCS 不是 SMS 或 MMS。这只是RCS。 “...在三星设备中放置“ ” 权限就足够了吗?” - 对于三星,是的,我相信这是正确的许可,但我不知道实际检索消息的 API 是什么样的。如果他们使用ContentProvider(很可能),那么您将在ContentResolver 上运行查询,类似于您对 SMS 所做的,但您必须确定权限。
  • @syam 您可以使用this post 中显示的方法之一来确认 Provider 是否存在,如果存在则获取其权限,然后从那里开始。

标签: android sms messaging mms


【解决方案1】:

编辑:这似乎是 API won’t make it after all。显然,工作仍在进行中:https://android-review.googlesource.com/q/RCS+(status:open+OR+status:merged)。但它不适用于第三方开发者。


据此 (https://9to5google.com/2019/02/22/android-q-rcs-api-delay/),现在最早直到 Android R 才会有开发人员可访问的 RCS 消息 API。


目前还没有办法(缺少一些特定于供应商的 API),但如果代码提交表明 Android 的发展方向有任何迹象,则正在支持以编程方式与 RCS 交互……https://android-review.googlesource.com/c/platform/frameworks/base/+/849669

相关类仍在实现中,但看起来您将依赖这些(暂定):

  • RcsParticipant
  • RcsThread
  • Rcs1To1Thread(扩展 RcsThread
  • RcsGroupThread(扩展 RcsThread
  • RcsMessage
  • RcsIncomingMessage(扩展 RcsMessage
  • RcsOutgoingMessage(扩展 RcsMessage
  • RcsPart
  • RcsFileTransferPart(扩展 RcsPart
  • RcsLocationPart(扩展 RcsPart
  • RcsMultiMediaPart(扩展 RcsPart
  • RcsTextPart(扩展 RcsPart

这个code 告诉你:

class RcsThreadQueryHelper {
    static final String ASCENDING = "ASCENDING";
    static final String DESCENDING = "DESCENDING";
    static final String THREAD_ID = "_id";
    static final Uri THREADS_URI = Uri.parse("content://rcs/thread");
    static final Uri PARTICIPANTS_URI = Uri.parse("content://rcs/participant");
    static final String[] THREAD_PROJECTION = new String[]{THREAD_ID};
    static String buildWhereClause(RcsThreadQueryParameters queryParameters) {
        // TODO - implement
        return null;
    }
}

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2011-11-16
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    相关资源
    最近更新 更多