Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read RCS messages from android device programmatically

My application basically backup the SMS and MMS to cloud server. I used below URI to retrieve data from database.

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


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

Few days back while testing my app i noticed some messages(SMS & MMS) are missing while retrieving from SQLite. After doing some research i found that those are RCS (Rich Communication Services) messages. Now my challenge is to read RCS messages(SMS & MMS). Is there any way to read RCS (Rich Communication Services) messages in Android? What URI i need to use for read RCS (Rich Communication Services) messages?

Thanks in advance.

like image 209
Krish Allamraju Avatar asked Oct 29 '22 22:10

Krish Allamraju


1 Answers

EDIT: It seems like the API won’t make it after all. Work is still happening to it apparently: https://android-review.googlesource.com/q/RCS+(status:open+OR+status:merged). But it won’t be for third-party developers.


According to this (https://9to5google.com/2019/02/22/android-q-rcs-api-delay/), now there will be no developer-accessible API for RCS messages until Android R at the earliest.


There isn’t a way (short of some vendor-specific API) at the moment, but support for programatically interfacing with RCS is underway if the code commits are any indication of the direction Android is going… https://android-review.googlesource.com/c/platform/frameworks/base/+/849669

The relevant classes are still being implemented, but it looks like you’ll be relying on these (tentatively):

  • RcsParticipant
  • RcsThread
  • Rcs1To1Thread (extends RcsThread)
  • RcsGroupThread (extends RcsThread)
  • RcsMessage
  • RcsIncomingMessage (extends RcsMessage)
  • RcsOutgoingMessage (extends RcsMessage)
  • RcsPart
  • RcsFileTransferPart (extends RcsPart)
  • RcsLocationPart (extends RcsPart)
  • RcsMultiMediaPart (extends RcsPart)
  • RcsTextPart (extends RcsPart)

This code is telling:

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;
    }
}
like image 199
Kevin Li Avatar answered Nov 09 '22 10:11

Kevin Li