我正在使用太多开发人员建议的功能,以检索存储在Firebase存储中的图像的Uri
,这是我的代码:
final StorageReference filereference = storageReference.child(System.currentTimeMillis()
+"."+getFileExtension(imageUri));
uploadTask =filereference.putFile(imageUri);
uploadTask.continueWith(new Continuation<UploadTask.TaskSnapshot,Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws
Exception {
if(!task.isSuccessful()){
throw task.getException();
}
return filereference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
try{
Uri downloadUri = task.getResult();
String mUri =downloadUri.toString();
}catch (Exception e){
Log.e("testingerror",e.toString());
}
它抛出了这个错误: com.example.asus.fireapp E / stayinsh:java.lang.ClassCastException:com.google.android.gms.tasks.zzu无法转换为android.net.Uri
答案 0 :(得分:0)
如果您使用的FirebaseStorage Api为10.0.1或更小,则您的代码应该可以使用 我的意思是 实施“ com.google.firebase:firebase-storage:10.0.1”以下
但更多使用
StorageReference filepath=user_Image_ref.child(user_id+".jpg");
filepath.putFile(resulturi).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()) {
String getimageurl = task.getResult().getDownloadUrl().toString();
databaseReference.child("PHOTO").setValue(getimageurl);
}else {
Toast.makeText(Register_activity.this,"errr",Toast.LENGTH_LONG).show();
}
String getimageurl = task.getResult().getDownloadUrl().toString();
databaseReference.child("PHOTO").setValue(getimageurl);
}
});
答案 1 :(得分:0)
它应该是continueWithTask,而不是continueWith
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();
}
return filereference.getDownloadUrl();
}