此方法只能从测试或在私有作用域中访问...( API )此检查检查已使用各种支持注释(如RequiresPermission或UiThread)注释的Android API调用,并标记未按照注释指定的方式正确使用Ctrl+F1的任何调用。此检查标记的错误示例:将错误类型的资源整数(如R.string)传递给需要不同类型(如R.dimen)的API。在需要调用需要权限的方法中忘记调用被覆盖的方法(通过超级),而没有在清单中声明权限的情况下,将资源颜色引用传递给需要RGB整数值的方法。
https://discussions.udacity.com/t/uri-downloadurl-tasksnapshot-getdownloadurl/232533?u=tahirs95
发布于 2018-07-19 08:31:57
我知道为时已晚,但我的答案可能会帮助那些在2018年6月1日之后有这个问题的人……因为firebase在2018年6月1日之后改变了它的策略和一些功能。以前获取下载uri的方法会给你一些你不想要的东西。
尝尝这个
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
final StorageReference ref = storageReference.child("folder_name_of_firebse_storage/" + UUID.randomUUID().toString());
UploadTask uploadTask = ref.putFile(your_image_uri_which_need_to_be_uploaded);
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();
//this is the uri you needed...
uploaded_image_url = downloadUri.toString();
} else {
// Handle failures
// ...
Toast.makeText(EditUserProfile.this, "Image uploading failed ", Toast.LENGTH_SHORT).show();
}
});
希望这能有所帮助!
发布于 2018-07-15 04:56:56
这应该行得通!
Uri downloadUrl = taskSnapshot.getResult().getDownloadUrl();
发布于 2020-05-16 23:17:41
Uri downloadUrl = taskSnapshot.getStorage().getDownloadUrl();
更改变量名称:
Task<Uri> downloadUrl = taskSnapshot.getStorage().getDownloadUrl();
看起来不错。
https://stackoverflow.com/questions/43020393
复制相似问题