从未读的彩信中获取附件

从未读的彩信中获取附件

我想从未读的彩信中获取附件,但我拥有的代码不允许我这样做。我该怎么做呢?
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);
    }
}

最佳答案

我想,代码如下:

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);
    }
}

关于android - 从未读的彩信中获取附件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7115939/

10-11 00:16