从电子邮件打开ZIP文件,提供错误的URI路径

时间:2013-03-12 01:12:16

标签: android android-intent android-contentprovider

我试图找出原因,当我尝试打开一个我有意图过滤器的电子邮件附件时,它给了我一个我无法读取的URI。它给我的URI是:

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

而不是:

/sdcard/Download/Attachments/MYZIP.ZIP

我打电话来获取路径的代码是this.getIntent().getData().getPath();

正确打开的唯一方法是首先下载它,以便它有一个我能够访问的路径。

1 个答案:

答案 0 :(得分:3)

这是第三方应用提供的自定义URI。您应该检查他们的API有关使用其内容URI的权限。这是some information

通常,您可以使用ContentResolver.openInputStream(android.net.Uri)从该URI获取InputStream,例如:

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 ...