android - 获取图像缩略图 Android KitKat 新的存储访问框架

标签 android storage thumbnails android-4.4-kitkat

据我所知,在 Android 中处理图像的正确方法是将图像 Uri 存储在数据库中,而不是图像的实际路径。 这就是我们如何免费获得缩略图的方法。我们不需要自己准备它们并隐藏一些。 下面的代码通过 Uri 获取缩略图。 代码适用于 android 4.4 及以下版本。但要获取图像 ID,它不会查询内容提供商。它从 Uri 本身获取 ID。问题是:它是一个稳定的解决方案吗?我可以依赖它吗?

@TargetApi(Build.VERSION_CODES.KITKAT)
public static Bitmap getImageThumbnail(Context context, Uri uri){ 
    final ContentResolver resolver = context.getContentResolver();
    long id;
    try {
        if (UIUtils.hasKitKat() && DocumentsContract.isDocumentUri(context, uri)) {
            String wholeID = DocumentsContract.getDocumentId(uri);
            // Split at colon, use second item in the array
            id = Long.parseLong(wholeID.split(":")[1]);
        }
        else if (isMediaUri(uri)){
            id = ContentUris.parseId(uri);
        }
        else return null;
        return MediaStore.Images.Thumbnails.getThumbnail(
                resolver,
                id,
                MediaStore.Images.Thumbnails.MINI_KIND,
                null);
    } 
    catch (Exception e) {
        if (DEBUG) Log.e(TAG, "getThumbnail", e);
        return null;
    }
}
public static boolean isMediaUri(Uri uri) {
    return "media".equalsIgnoreCase(uri.getAuthority());
}

最佳答案

你应该使用DocumentsContract.getDocumentThumbnail() 。这保证适用于任何文档 uri,而不仅仅是内置媒体提供程序。

关于android - 获取图像缩略图 Android KitKat 新的存储访问框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23953295/

相关文章:

python - 保存到外部 PY 文件?

java - 如何获取仅一张图像的缩略图并将其放入 ImageView 中?

php - 使用 imagecopyresampled 裁剪图像的中心正方形

java - 带有 MenuInflater 的菜单 XML

Android导航组件从homefragment关闭应用程序

android - Activity 中的双击事件

Android 大型关系文本数据的最优存储机制是什么

java - 调用 web 服务时出现 FileNotFoundException

Azure 客户端加密

css - 推特 Bootstrap 缩略图对齐问题