2013-03-12 1 views
3

Я пытаюсь понять, почему, когда я пытаюсь открыть вложение электронной почты, на которое у меня есть фильтр намерений, он дает мне URI, с которого я не могу читать. URI это дает мне это:Открытие ZIP-файла по электронной почте, дающий неправильный путь URI

content://com.android.email.attachmentprovider/1/32/RAW 

вместо:

/sdcard/Download/Attachments/MYZIP.ZIP 

код Я звоню, чтобы получить путь является this.getIntent().getData().getPath();

Единственный способ, которым он открывается правильно является загрузка сначала он имеет путь, к которому я могу получить доступ.

ответ

3

Это пользовательский URI, предоставляемый сторонним приложением. Вы должны проверить их API о разрешениях на работу с их URI содержимого. Вот some information.

Обычно вы можете использовать ContentResolver.openInputStream(android.net.Uri), чтобы получить InputStream от URI, что-то вроде:

import java.util.zip.ZipInputStream; 

// ... 

public static void test(Context context) throws Exception { 
    Uri uri = Uri.parse("content://com.android.email.attachmentprovider/1/32/RAW"); 
    ZipInputStream zis = new ZipInputStream(
      context.getContentResolver().openInputStream(uri)); 
    try { 
     // ... 
    } finally { 
     zis.close(); 
    } 
} 

Но это зависит от поставщика (если они обеспечивают такой доступ или нет). Поэтому не забудьте проверить их SDK/API ...

+0

Вы решили проблему? Кажется сумасшедшим для меня, что открытие вложения файлов из почты требует доступа к API для конкретного поставщика. –

Смежные вопросы