据我所知,在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());
}