Android 以编程方式读取彩信详细信息并显示在listview中

Android 以编程方式读取彩信详细信息并显示在listview中,android,cursor,mms,Android,Cursor,Mms,我需要获取所有彩信数据详细信息,如彩信图像、地址、日期和类型。 我使用以下逻辑。在本文中,我使用了两个游标,一个用于图像,另一个用于剩余字段。但两个游标的大小不同。因此,我无法同时匹配图像和其他字段 //for date,address,type Cursor curPdu = getContentResolver ().query(Uri.parse("content://mms"), null, null, null, null);

我需要获取所有彩信数据详细信息,如彩信图像、地址、日期和类型。 我使用以下逻辑。在本文中,我使用了两个游标,一个用于图像,另一个用于剩余字段。但两个游标的大小不同。因此,我无法同时匹配图像和其他字段

              //for date,address,type
         Cursor curPdu = getContentResolver ().query(Uri.parse("content://mms"), null, null, null, null);
                     while(curPdu.moveToNext())
                       {
                            String id = curPdu.getString (curPdu.getColumnIndex ("_id"));
                            String date = curPdu.getString (curPdu.getColumnIndex ("date"));
                            mms_add.add(getAddressNumber(Integer.parseInt(id)));

                            int type = Integer.parseInt(curPdu.getString(curPdu.getColumnIndex("m_type")));
                           mms_type.add((type==128)?"2":"1");
                           mms_date.add(getDate(Long.parseLong(date)));

                        }

 //for image
            Cursor curPart = getContentResolver (). query (Uri.parse ("content://mms/part"), null, null, null, null);
              while(curPart.moveToNext())
                  {
                  coloumns = curPart.getColumnNames();
                    if(values == null)
                    values = new String[coloumns.length];

                    for(int i=0; i< curPart.getColumnCount(); i++)
                    {
                    values[i] = curPart.getString(i);
                    }

                        if(values[3].equals("image/jpeg"))
                        {
                        mms_image.add(GetMmsAttachment(values[0],values[12],values[4]));
                        }else{
                            mms_image.add("null");
                        }
                }
//日期、地址、类型
游标curPdu=getContentResolver().query(Uri.parse(“content://mms)、空、空、空、空);
while(curPdu.moveToNext())
{
字符串id=curPdu.getString(curPdu.getColumnIndex(“_id”);
字符串日期=curPdu.getString(curPdu.getColumnIndex(“日期”);
mms_add.add(getAddressNumber(Integer.parseInt(id));
int type=Integer.parseInt(curPdu.getString(curPdu.getColumnIndex(“m_type”));
mms_type.add((type==128)?“2”:“1”);
mms_date.add(getDate(Long.parseLong(date));
}
//为了形象
游标curPart=getContentResolver()。查询(Uri.parse(“content://mms/part)、空、空、空、空);
while(curPart.moveToNext())
{
columns=curPart.getColumnNames();
如果(值==null)
值=新字符串[coloumns.length];
对于(int i=0;i

因此,如果可能,请指导我如何使用一个cusor获取所有详细信息。

您可以尝试提供的解决方案和url。
我可以知道你为什么需要2个光标吗?我假设有一些彩信没有图像连接,所以这就是您获得不同计数的原因。

您可以尝试使用此库中的代码: