Я работаю над задачами и связанными с ними задачами, которые позволяют пользователям выбирать изображение для использования в качестве изображения профиля из Галереи. После того, как выбор сделан, изображение загружается на веб-сервер через его 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-адрес для изображения, если он не является локальным хранилищем, но я не могу найти никакой информации об этом в любом месте.