Я работаю над задачами и связанными с ними задачами, которые позволяют пользователям выбирать изображение для использования в качестве изображения профиля из Галереи. После того, как выбор сделан, изображение загружается на веб-сервер через его API. У меня есть регулярные изображения из галереи. Однако, если выбранное изображение выбрано из Веб-альбома Picasa, ничего не возвращается.
Я сделал много отладки и сузил проблему до этого метода.
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
//cursor is null for picasa images
if(cursor!=null)
{
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
else return null;
}
Изображения Picasa возвращают нулевой курсор. MediaStore.Images.Media.DATA для них не является нулевым. Он возвращает только #id, поэтому я предполагаю, что фактических битмап-данных по адресу нет. Изображения Picasa хранятся локально на устройстве?
Я также заметил из документации, что существует MediaStore.Images.ImageColumns.PICASA_ID. Это значение существует для выбранных изображений picasa, но не для других изображений галереи. Я думал, что могу использовать это значение, чтобы получить URL-адрес для изображения, если он не является локальным хранилищем, но я не могу найти никакой информации об этом в любом месте.