Открытие ZIP файла по электронной почте, дающий неправильный путь URI

Вопрос:Я пытаюсь выяснить, почему, когда я пытаюсь открыть вложение электронной почты, в котором у меня есть фильтр намерений, он дает мне URI, с которого я не могу читать. URI, который он мне дает, это: content://com.android.email.attachmentprovider/1/32/RAW вместо: /sdcard/Download/Attachments/MYZIP.ZIP Код, который я вызываю, чтобы получить путь, this.getIntent().getData().getPath(); Единственный способ, которым он открывается, - сначала загрузить его, чтобы

Вопрос:

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

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

вместо:

/sdcard/Download/Attachments/MYZIP.ZIP

Код, который я вызываю, чтобы получить путь, this.getIntent().getData().getPath();

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

Лучший ответ:

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

Обычно вы можете использовать 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…

Оцените статью
Добавить комментарий