3

我试图弄清楚为什么,当我尝试打开一个我有意图过滤器的电子邮件附件时,它给了我一个我无法读取的 URI。它给我的URI是:

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

代替:

/sdcard/Download/Attachments/MYZIP.ZIP

我调用来获取路径的代码是this.getIntent().getData().getPath();

它正确打开的唯一方法是先下载它,这样它就有一个我可以访问的路径。

4

1 回答 1

3

这是第三方应用程序提供的自定义 URI。您应该检查他们的 API,了解使用其内容 URI 的权限。这是一些信息

通常,您可以使用从该 URIContentResolver.openInputStream(android.net.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...</p>

于 2013-03-12T01:46:42.780 回答