Kar*_*ran 14 android firebase firebase-storage
在gradle更新之前一切正常,但稍后会弹出这个错误.我已经提到了官方文档,它提供了相同的代码. 不接受getDownloadUrl()方法
我添加了最新的正确依赖项,并且gradle sync成功. 应用程序/的build.gradle
这是firebase文档中提供的示例代码,与我的相同. Firebase助手
即使所有必需的东西都存在,我也无法理解可能出现的问题.坚持这2天,请帮忙!
Ana*_*nth 11
正如Doug指出的那样,UploadTask.getDownloadUrl()已弃用,因此请使用 StorageReference.getDownloadUrl().
但StorageReference.getDownloadUrl()返回Task,必须异步处理,你不能做Uri downloadUrl = photoRef.getDownloadUrl().getResult();其他的事情你会得到java.lang.IllegalStateException: Task is not yet complete
因此,像这样异步处理它
photoRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Uri downloadUrl = uri;
Toast.makeText(getBaseContext(), "Upload success! URL - " + downloadUrl.toString() , Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
如果您有一个“ image_uri”并将其放入Firebase存储中,则此代码将为您提供帮助。
private StorageReference storageReference= FirebaseStorage.getInstance().getReference();
final StorageReference ref = storageReference.child("picture.jpg");
ref.putFile(image_uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final Uri downloadUrl = uri;
}
});
Run Code Online (Sandbox Code Playgroud)
UploadTask.getDownloadUrl()已弃用。请改用StorageReference.getDownloadUrl()。
getDownloadUrl 不复存在。
因此,新方法是:
final StorageReference ref = storageRef.child("images/mountains.jpg");
uploadTask = ref.putFile(file);
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();
} else {
// Handle failures
// ...
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20628 次 |
| 最近记录: |