从未读的彩信中获取附件

时间:2011-08-19 01:05:57

标签: android attachment mms

我想从未读彩信获得附件,但我的代码不允许我这样做。我该怎么做呢?

here修改的代码:

private void checkMMSMessages(){ 

    // Create string arrays to store the queries later on
    String[] columns = null; 
    String[] values = null; 

    // Calls the ContentResolver to query for columns with URI "content:mms"
    Cursor curPdu = getContentResolver().query(Uri.parse("content://mms"), null, null, null, null); 
    if(curPdu.moveToNext()){ 
        //String read = curRead.getString(curRead.getColumnIndex("read"));
        // Gets ID of message
        String id = curPdu.getString(curPdu.getColumnIndex("_id")); 
        // Gets thread ID of message
        String thread_id = curPdu.getString(curPdu.getColumnIndex("thread_id")); 
        // Gets subject of message (if any)
        String subject = curPdu.getString(curPdu.getColumnIndex("sub")); 
        // Gets date of message
        String date = curPdu.getString(curPdu.getColumnIndex("date")); 

        String selectionAddr = new String ("msg_id = '" + id + "'"); 
        Uri uriAddr = Uri.parse ("content://mms/" + id + "/addr"); 
        Cursor curAddr = getContentResolver().query(uriAddr, null, null, null, null); 
        if(curAddr.moveToNext()){ 
            String contact_id = curAddr.getString (curAddr.getColumnIndex ("contact_id")); 
            String address = curAddr.getString (curAddr.getColumnIndex ("address")); 
            String selectionPart = new String ("mid = '" + id + "'"); 
            Cursor curPart = getContentResolver ().query(Uri.parse ("content://mms/part"), null, null, null, null); 
            //Cursor curPart = context.getContentResolver ().query(Uri.parse ("content://mms/" + id + "/part"), null, null, null, null); 

            while(curPart.moveToNext()) 
            { 
                columns = curPart.getColumnNames(); 
                if(values == null) 
                    values = new String[columns.length]; 

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

                if(values[3].equals("image/jpeg") || values[3].equals("image/bmp") || 
                        values[3].equals("image/gif") || values[3].equals("image/jpg") ||
                        values[3].equals("image/png")) 
                { 
                    GetMmsAttachment(values[0],values[12]); 
                    //Toast.makeText(getApplicationContext(), "Retrieved MMS attachment", Toast.LENGTH_LONG);
                } 
            } 
        } 
    } 
} 

private void GetMmsAttachment(String _id, String _data) 
{ 
    Uri partURI = Uri.parse("content://mms/part/" + _id ); 
    String filePath = "/sdcard/photo.jpg";
    InputStream is = null;
    OutputStream picFile = null;
    Bitmap bitmap = null;

    try { 
        is = getContentResolver().openInputStream(partURI); 
        bitmap = BitmapFactory.decodeStream(is);

        picFile = new FileOutputStream(filePath);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, picFile);
        picFile.flush();
        picFile.close();
    } 
    catch (Exception e) 
    { 
        e.printStackTrace(); 
        //throw new MmsException(e); 
    } 
}

2 个答案:

答案 0 :(得分:7)

弄清楚自己,代码如下:

private void checkMMSMessages() {

    String[] columns = null; 
    String[] values = null;
    String read = "read = 0";

    Cursor curPdu = getContentResolver().query(Uri.parse("content://mms"), null, read, null, null); 
    if(curPdu.moveToNext()){
        String id = curPdu.getString(curPdu.getColumnIndex("_id"));
        Cursor curPart = getContentResolver().query(Uri.parse ("content://mms/" + id + "/part"), null, null, null, null);

        while(curPart.moveToNext()) 
        { 
            columns = curPart.getColumnNames(); 
            if(values == null) 
                values = new String[columns.length]; 

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

            if(values[3].equals("image/jpeg") || values[3].equals("image/bmp") || 
                    values[3].equals("image/gif") || values[3].equals("image/jpg") ||
                    values[3].equals("image/png")) 
            { 
                GetMmsAttachment(values[0],values[12]); 
            } 
        } 
    }
}

private void GetMmsAttachment(String _id, String _data) 
{ 
    Uri partURI = Uri.parse("content://mms/part/" + _id ); 
    String filePath = "/sdcard/photo.jpg";
    InputStream is = null;
    OutputStream picFile = null;
    Bitmap bitmap = null;

    try { 
        is = getContentResolver().openInputStream(partURI); 
        bitmap = BitmapFactory.decodeStream(is);

        picFile = new FileOutputStream(filePath);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, picFile);
        picFile.flush();
        picFile.close();
    } 
    catch (Exception e) 
    { 
        e.printStackTrace(); 
        //throw new MmsException(e); 
    } 
}

答案 1 :(得分:0)

我认为他问如何从服务器检索附件,因为它是UNREAD mms ...如果你有列ct_l如何从该网址获取数据?