如何编程从安卓设备中读取RCS短信

7
我的应用程序基本上是将短信和彩信备份到云服务器。我使用以下URI从数据库中检索数据。
SMS- Uri uri = Uri.parse("content://sms/");
MMS-Uri uri = Uri.parse("content://mms/");
几天前,在测试我的应用程序时,我注意到一些消息(短信和彩信)在从SQLite中检索时丢失了。经过一些研究,我发现那些是RCS(Rich Communication Services)消息。现在我的挑战是读取RCS消息(短信和彩信)。 有没有办法在Android中读取RCS(Rich Communication Services)消息? 我需要使用哪个URI来读取RCS(Rich Communication Services)消息?
提前致谢。

Android目前还没有标准的RCS API。每个制造商/运营商都会有所不同。 - Mike M.
嗨,Mike,感谢您的回复。制造商是指移动设备制造商吗?如果我想在三星设备中收集RCS消息(短信和彩信),那么只需要添加“<uses-permission android:name="com.samsung.rcs.im.READ_PERMISSION"/>”权限吗? - syam vakkalanka
@syam "制造商是指移动设备制造商吗?" - 是的。 "如果我想收集RCS消息(SMS和MMS)..." - RCS不是SMS或MMS。它只是RCS。 "...在三星设备中,那么放置"<uses-permission android:name="com.samsung.rcs.im.READ_PERMISSION"/>"权限就足够了吗?" - 对于三星设备,是的,我相信这是正确的权限,但我不知道实际检索消息的API是什么样子的。如果他们使用ContentProvider(这很可能),那么您将在ContentResolver上运行查询,类似于SMS所做的操作,尽管您必须找出权威机构。 - Mike M.
@syam 你可以使用这篇帖子中展示的方法之一来确认提供程序是否存在,如果存在则获取其权限,并从那里开始。 - Mike M.
1个回答

3
编辑:看起来API 最终不会推出。显然仍在进行相关工作: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之外),还没有办法与RCS进行程序化接口,但是如果代码提交是Android发展方向的任何迹象,则正在进行与RCS交互的支持。相关类仍在实现中,但看起来您将依赖于这些类(暂定):https://android-review.googlesource.com/c/platform/frameworks/base/+/849669
  • RcsParticipant:RCS参与者
  • RcsThread:RCS线程
  • Rcs1To1Thread (extends RcsThread):一对一线程(继承自RCS线程)
  • RcsGroupThread (extends RcsThread):群组线程(继承自RCS线程)
  • RcsMessage:RCS消息
  • RcsIncomingMessage (extends RcsMessage):接收到的RCS消息(继承自RCS消息)
  • RcsOutgoingMessage (extends RcsMessage):发送的RCS消息(继承自RCS消息)
  • RcsPart:RCS消息部分
  • RcsFileTransferPart (extends RcsPart):文件传输部分(继承自RCS消息部分)
  • RcsLocationPart (extends RcsPart):位置信息部分(继承自RCS消息部分)
  • RcsMultiMediaPart (extends RcsPart):多媒体部分(继承自RCS消息部分)
  • RcsTextPart (extends RcsPart):文本部分(继承自RCS消息部分)

这段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;
    }
}

这方面有什么新消息吗?我已经可以在我的短信应用中接收RCS消息了,但是我不知道该如何发送RCS消息。有什么线索或者文档链接吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接