Использование CursorLoader с LoaderManager для получения изображений из приложений Android
На данный момент яиспользуя getContentResolver (). query () / managedQuery (), чтобы получить курсор для извлечения изображений из приложения галереи. Потому что API, которые яЯ использую частично устарел Я хотел использовать CursorLoader с LoaderManager.
/**
* Creates a cursor to access the content defined by the image uri for API
* version 11 and newer.
*
* @return The created cursor.
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private Cursor createCursorHoneycomb() {
String[] projection = {
MediaStore.Images.Media.DATA
};
Cursor cursor = getContentResolver().query(imageUri, projection, null, null, null);
return cursor;
}
/**
* Creates a cursor to access the content defined by the image uri from API
* version 8 to 10.
*
* @return The created cursor.
*/
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.FROYO)
private Cursor createCursorFroyo() {
String[] projection = {
MediaStore.Images.Media.DATA
};
Cursor cursor = managedQuery(imageUri, projection, null, null, null);
return cursor;
}
Так как я неу меня нет ListView, которого у меня нетт использовать любой адаптер. Я просто установил растровое изображение для ImageView.
/**
* Sets the image bitmap for the image view.
*/
private void setupImageView() {
String imagePath = getImagePathFromUri(imageUri);
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap);
}
/**
* Returns an image path created from the supplied image uri.
*
* @param imageUri The supplied image uri.
* @return Returns the created image path.
*/
@SuppressWarnings("deprecation")
private String getImagePathFromUri(Uri imageUri) {
Cursor cursor = null;
String imagePath = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
cursor = createCursorHoneycomb();
} else {
cursor = createCursorFroyo();
}
// if image is loaded from gallery
if (cursor != null) {
startManagingCursor(cursor);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
imagePath = cursor.getString(columnIndex);
}
// if image is loaded from file manager
else {
imagePath = imageUri.getPath();
}
return imagePath;
}
Можно ли использовать CursorLoader с LoaderManager для загрузки изображений из приложения галереи или файлового менеджера? Я не могуне могу найти никакого решения.