据我所知,在 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/