Fetch address from “canonical_addresses” table

后端 未结 2 1938
长发绾君心
长发绾君心 2021-01-05 07:14

I am working on an Android application. I fetched recipient_id from the following uri.

content://mms-sms/conversations?simple=true

Now I wa

相关标签:
2条回答
  • 2021-01-05 07:39
    message = contentResolver.query(uri, null,null, null,SORT_ORDER);
                if(message != null){
                    while (message.moveToNext()) {
                            String id = message.getString(message.getColumnIndex("_id"));
                            String thid = message.getString(message.getColumnIndex("thread_id"));
                            String phoneNumber = message.getString(message.getColumnIndex("address"));
                            String person = message.getString(message.getColumnIndex("person"));
                            //String present = message.getString(message.getColumnIndex("reply_path_present"));
                            //Log.v("sms "+thid,id);
                            //Log.v("sms "+present,present);
                            if(phoneNumber !=null ){
                                    //if(phoneNumber.contains("-"))
                                        phoneNumber=phoneNumber.replaceAll("[-() ]", "");
                            }
                            else
                            {
                                 Cursor c =contentResolver.query(Uri.parse("content://mms-sms/conversations?simple=true"), null, "_id = " + thid, null, null);
                                 //getContentResolver().query(Uri.parse("content://mms-sms/canonical-addresses"), null, "_id = " + recipientId, null, null);
                                 if(c.moveToNext())
                                 {
    
                                     phoneNumber = c.getString(3);
                                     if(phoneNumber !=null ){
                                            //if(phoneNumber.contains("-"))
                                         Log.v(" id=>" +id+ " thid=>"+thid +" first = > " , c.getString(3));
                                    }
                                 }
                                 c.close();
                                 c =contentResolver.query(Uri.parse("content://mms-sms/canonical-addresses"), null, "_id = " + phoneNumber, null, null);
                                 if(c.moveToNext())
                                 {
                                     Log.v(thid +" second = > " , c.getString(1));
                                     phoneNumber = c.getString(1);
                                     phoneNumber=phoneNumber.replaceAll("[-() ]", "");
                                 }
                                 c.close();
    
    0 讨论(0)
  • 2021-01-05 07:45

    Canonical table has two columns, _id and address. When you get recipient id you do a lookup for that id in the canonical addresses table. For multiple recipients the ids are separated by a space, so you'll have to split the result like

    recipient_ids.split(" ")

    and lookup each id.

    getContentResolver().query(Uri.parse("content://mms-sms/canonical-addresses"), null, "_id = " + recipientId, null, null);
    

    or

    getContentResolver().query(Uri.parse("content://mms-sms/canonical-address/" + recipientId), null, null, null, null);
    
    0 讨论(0)
提交回复
热议问题