首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓系统中使用URI中的ParcelFileDescriptor进行图片选择

在安卓系统中使用URI中的ParcelFileDescriptor进行图片选择
EN

Stack Overflow用户
提问于 2013-12-26 15:07:37
回答 1查看 3.4K关注 0票数 6

我的应用程序正在使用ACTION_GET_INTENT创建一个查找图像mime类型的意图。在返回时,我组织了一个漫长而详细的过程,包括检查数据的意图、从URI的内容解析器获取游标、检查uri.toString()以及处理某些URI与其他URI不同。例如,"content://com.google.android.gallery3d“将是"content://com.google.android.apps.docs.storage”,依此类推。

这变得很痛苦,特别是自从KitKat出现并引入了更多的URI来处理之后。

但是后来我在一些与SAF和KitKat相关的谷歌开发者页面上看到了这段建议代码。这似乎工作得很完美。我在KitKat、JB和GB设备上测试了所有已安装的“文件选择器”类应用程序。它从未失败过。

**所以我的问题是is....is这个代码吗?还有什么需要注意的吗?如果这是首选方法,那么为什么有这么多关于如何处理从选择图像返回的意图/URI的帖子呢?

代码示例可以在“位图”部分下的:https://developer.android.com/guide/topics/providers/document-provider.html Look找到。

代码语言:javascript
复制
try {
        final ParcelFileDescriptor parcelFileDescriptor = myContext.getContentResolver().openFileDescriptor(
                imageUri, "r");
        final FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
        final Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor);
        parcelFileDescriptor.close();
        return bitmap;
    } catch (Exception e) {
        Log.e(tag, "Failed to Parse Image Uri", e);
        throw new Exception("failed to parse image uri");
    }
EN

回答 1

Stack Overflow用户

发布于 2014-07-15 22:41:37

上面提到的代码是适用于所有设备的完美解决方案。因为我们有一个自动备份文件夹和一些特定的设备uri问题。因此,如果你使用FileDescriptor,它在所有设备上都能正常工作。我还使用了相同的代码,并在2.3.3版本到4.4.2版本等11种设备上进行了测试。上述代码的优点是:我们可以从设备库中选择任何图像,包括autobackup文件夹。但是你提到的现有代码不能从图库中选择视频(只适用于autobackup文件夹)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20780679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档