Я изо всех сил пытаюсь понять, что может быть простым обходным путем для сопоставления изображений и постоянных объектов данных в Android.Более подробно, я разработал простую архитектуру персистентности комнаты, и теперь мне нужно добавить поле «изображение» к персистентному объекту java.Я пытался работать с URI, но мои знания об Android очень плохие, и что я получаю, так это то, что URI, который я восстанавливаю при выборе изображения с помощью файлового менеджера Android, действителен только до перезагрузки, поэтому, если я сохраню полученные данныеURI в базе данных, не будет иметь смысла, когда восстановится позже.Как мне управлять?
По сути, мне нужен простой способ связать объект с локальным изображением, хранящимся в телефоне (или снятым на лету с помощью камеры), не беспокоясь об удалении изображения пользователемили что-нибудь, просто простой способ.
Для истины я пытался повозиться с примером кода Google, но я явно потерпел неудачу, потому что я не знаю, что я делаю
private Bitmap getBitmapFromUri(Uri uri) throws IOException {
ParcelFileDescriptor parcelFileDescriptor =
getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
return image;
}
этокод приводит к ошибке компиляции, с обязательными: parcedDescriptor ... и VOID найдены, при вызове takePersistableUriPermission.Я даже не знаю, является ли это решением моей проблемы.
это код, который я использую для получения URI из локального изображения, но я также планирую позволить камере сделать снимок ипередать его для сохранения / связывания
// ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
// browser.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
// Filter to only show results that can be "opened", such as a
// file (as opposed to a list of contacts or timezones)
intent.addCategory(Intent.CATEGORY_OPENABLE);
// Filter to show only images, using the image MIME data type.
// If one wanted to search for ogg vorbis files, the type would be "audio/ogg".
// To search for all documents available via installed storage providers,
// it would be "*/*".
intent.setType("image/*");
startActivityForResult(intent, READ_REQUEST_CODE);