Я работаю над приложением, и в наиболее важном действии должно произойти следующее:
- Пользователь заполняет форму и выбирает изображение со своего телефона.
- Когда он нажимает «Добавить данные», я хочу сохранить выбранное изображение (или его путь, все, что позволяет мне получить его позже) в локальную базу данных и получить позже в другом действии.
Что я пробовал:
- Сохраните изображение в БД как большой двоичный объект и извлеките его позже как растровое изображение, но, очевидно, я узнал, что это не удается, когда используется изображение большего размера, для большого двоичного объекта установлено значение null.
- Пытался получить путь к файлу выбранного изображения, но этот путь к файлу имеет формат, подобный этому:
/document/msf:35
Затем я попытался получить физический путь, используя эти ответы SO: >ссылка1, ссылка2, link3 и эти ответы в целом: link4, link5.
Пожалуйста, не отмечайте это как дубликат, потому что решение в других ответах мне не подходит
Открытие намерения загрузить фото:
// upload photo
photoActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent intent = result.getData();
if (intent.getData() == null) {
Log.d("AddTrip", "null data from image");
}
Uri uri = intent.getData();
// processing here..
}
}
});
}
private void uploadPhotoClicked() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
photoActivityResultLauncher.launch(intent);
}
Пожалуйста, предложите решение, чтобы обойти это, а также лучшие практики для реализации этого типа функций, я пытался использовать PathUtil, но не указывает пути для некоторых изображений.
File Manager
или куда-то еще (например, вcPanel
) и сохранить URL-адрес в БД. - person David Lee   schedule 03.07.2021