如何从Gmail内容提供商处获取内容

时间:2011-09-09 17:56:41

标签: java android android-intent android-contentprovider

我必须从gmail应用程序中检索内容的文件路径。 我得到的内容类似于:

content://gmail-ls/messages/mymailid%40gmail.com/4/attachments/0.1/BEST/false

我尝试查询内容但我只获得两列标题和大小。我想获取文件路径。

请帮忙解决这个问题。

1 个答案:

答案 0 :(得分:7)

我认为您无法直接检索文件路径,因为附件存储在Google服务器上。但是,您可以使用ContentResolver和InputStream访问文件数据,并将附件的数据复制到存储中。

CarvingCode blog启发,我使用此代码段:

if (intent.getScheme().compareTo("content")==0)
{
    try 
    {
        InputStream attachment = getContentResolver().openInputStream(data);
        if (attachment == null)
            Log.e("onCreate", "cannot access mail attachment");
        else
        {
            FileOutputStream tmp = new FileOutputStream("/mnt/sdcard/attachment.pdf");
            byte []buffer = new byte[1024];
            while (attachment.read(buffer) > 0)
                tmp.write(buffer);

            tmp.close();
            attachment.close();
        }
    } 
    catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}