Как получить контент от провайдера контента Gmail - PullRequest
1 голос
/ 09 сентября 2011

Мне нужно получить путь к файлу содержимого из приложения Gmail.Я получаю содержимое, похожее на:

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

Я попытался запросить содержимое, но у меня есть только два столбца: заголовок и размерЯ хочу получить путь к файлу.

Пожалуйста, помогите об этом.

1 Ответ

7 голосов
/ 14 ноября 2011

Я думаю, что вы не можете получить путь к файлу напрямую, так как вложение хранится на серверах Google. Однако вы можете получить доступ к данным файла с помощью ContentResolver и InputStream и скопировать данные вложения в свое хранилище.

Вдохновленный Блогом CarvingCode , я использую этот фрагмент:

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