Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get full conversation with Android query

I would like to get all messages from one contact. I have the contact ID _id, so I've already do something like this :

private void displayMessages() {
    ContentResolver cr = this.getContentResolver();


    try {
        Cursor cursor = cr.query(Uri.parse("content://mms-sms/conversations"), new String[]{"*"}, this.contID + "= _id" , null, null); //contID is the unique ID for one contact in our android.
        while (cursor.moveToNext()) {
            System.out.println("Number: " + cursor.getString(cursor.getColumnIndexOrThrow("address")));
            System.out.println("Body : " + cursor.getString(cursor.getColumnIndexOrThrow("body")));
        }
        cursor.close();

    }
    catch (Exception e) {
        System.out.print("ERROR");
    }

I've asked something like

SELECT * FROM content://mms-sms/conversations WHERE _id = contID

As you can see, in my query, I ask system for messages from one contact (user id that I know) But I can just display the last message body. So I think it exists others query to get all messages from one user ?

Any ideas ???

like image 860
Couim Avatar asked Jan 25 '26 13:01

Couim


1 Answers

I doubt that _id in this case is the id of the contact you are sending sms/mms to but rather the thread's id. The column you probably want to use for your query clause is RECIPIENT_IDS. For debugging purpose try without the where clause and dump the cursor to analyze the results

Cursor cursor = cr.query(Uri.parse("content://mms-sms/conversations"), new String[]{"*"}, null , null, null);
DatabaseUtils.dumpCursor(cursor);
like image 109
Blackbelt Avatar answered Jan 27 '26 01:01

Blackbelt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!