主要步骤:

1、 获取短信会话列表

2、根据获取到的会话列表中的recipient_ids 信息去canonical_addresses 中获取对应的地址信息。

 

package com.xx.readsms;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class ReadSmsActivity extends Activity {
    /** Called when the activity is first created. */
    private Context mContext; 
    private TextView tv;
    private static List<ContactInfo> list=new ArrayList<ContactInfo>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv=(TextView)this.findViewById(R.id.tv_test);
        getSMSInfo();
        tv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                list.clear();
                System.out.println("=================1");
                getContacts_LastMessage();
                System.out.println("=================2");
                StringBuilder sb=new StringBuilder();
                if(list!=null){
                    System.out.println("=================3");
                    for (int i = 0; i < list.size(); i++) {
                        System.out.println("=================4:"+i);
                        ContactInfo tmp=new ContactInfo();
                        tmp=(ContactInfo)list.get(i);
                        sb.append("["+tmp.getContact()+",");
                        sb.append(tmp.getLast_mms()+",");
                        sb.append(tmp.getDate_mms()+",");
                        sb.append(getCanonicalAddresses(tmp.getRecipient())+",");//去canonical_addresses表获取接收者号码
                        sb.append(tmp.getFinal_count()+"]\n");
                    }
                    tv.setText("");
                    tv.setText(sb.toString());
                }
                else{
                    System.out.println("list is null");
                }
            }
        });
    }

    public String getCanonicalAddresses(String recipient_ids){
        String[] ids=recipient_ids.split(" ");
        System.out.println("recipient_ids:"+recipient_ids);
        String addressResult="";
        for (int i = 0; i < ids.length; i++) {
            Cursor cur=ReadSmsActivity.this.getContentResolver().query(Uri.parse("content://mms/"), 
                    new String[]{" * from canonical_addresses where _>return info;                
    }

相关文章: