Здравствуйте. Я пытаюсь получить URL-адрес изображения из хранилища Firebase после загрузки изображения и отобразить его в Toast из метода загрузки изображений, который возвращает URL-адрес в виде строки.
Я могу получить URL, но мой тост запускается до завершения загрузки изображения, поэтому вместо URL возвращается пустой строковый ответ.
Чего я хочу добиться, так это получить URL-адрес изображения и затем отобразить его в тосте за пределами метода загрузки, если загрузка прошла успешно
Это то, что я пробовал;
insertImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(TestFirebaseImageUpload.this, firebaseImageUpload(filePath), Toast.LENGTH_SHORT).show();
}
});
при нажатии кнопки insertImage отображается тост, который должен содержать URL-адрес изображения, полученного путем отправки файла uri в firebaseImageUploadMethod.
Это мой метод загрузки firebaseImage
public String firebaseImageUpload(Uri filePath) {
if (filePath != null) {
// Setting progressDialog Title.
progressDialog = new ProgressDialog(this);
progressDialog.setTitle(" Uploading...");
progressDialog.show();
ref = imagePath.child("images/" + UUID.randomUUID().toString());
ref.putFile(filePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
Toast.makeText(TestFirebaseImageUpload.this, "Uploaded ... ", Toast.LENGTH_SHORT).show();
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
URL = uri.toString();
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
URL = "";
Toast.makeText(TestFirebaseImageUpload.this, "Not Uploaded ... ", Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
progressDialog.setMessage("Uploaded " + (int) progress + "%");
}
});
}
return URL;
}
Мне нужно отобразить URL-адрес в тосте, который отображается при нажатии кнопки insertImage.
Спасибо