在我的应用中,用户按下一个按钮,将他们的图像上传到 Firebase 存储,同时将它们带到带有结果的页面。在他们上传图像后,我需要在本地运行一些命令,然后将结果上传到 Firebase 存储。当图像已经在 Firebase 存储中时,我的结果显示正确(下面使用的代码),但如果我在用户按下按钮后添加图像,我无法让它工作,有没有办法做到这一点?>
ImageView image = findViewById(R.id.rImage);
Picasso.Builder builder = new Picasso.Builder(this);
builder.listener(new Picasso.Listener()
{
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
{
exception.printStackTrace();
}
});
builder.build().load("https://url").into(image);
答案 0 :(得分:0)
我希望我答对了。我会用这样的代码上传图片:
final StorageReference ref = storageRef.child("images/your_file_name.png");
uploadTask = ref.putFile(file);
ImageView image = findViewById(R.id.rImage);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return ref.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
Picasso.Builder builder = new Picasso.Builder(this);
builder.listener(new Picasso.Listener()
{
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
{
exception.printStackTrace();
}
});
builder.build().load(downloadUri).into(image);
} else {
// Handle failures
// ...
}
}
});