如何解决方法getDownloadUrl()

Posted

技术标签:

【中文标题】如何解决方法getDownloadUrl()【英文标题】:How to resolve method getDownloadUrl() [duplicate] 【发布时间】:2019-02-08 11:43:51 【问题描述】:
Uri resultUri = result.getUri();
            String current_user_id= mCurrentUser.getUid();
            StorageReference filepath = mImageStorage.child("profile_image").child(current_user_id+".jpg");
            filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() 
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) 
                    if(task.isSuccessful())

                        String download_url = task.getResult().getDownloadUrl().toString();

                        mUserDatabase.child("image").setValue(download_url).addOnCompleteListener(new OnCompleteListener<Void>() 
                            @Override
                            public void onComplete(@NonNull Task<Void> task) 
                                if(task.isSuccessful())
                                    mProgressDialog.dismiss();
                                    Toast.makeText(SettingsActivity.this,"Success upploading.",Toast.LENGTH_LONG).show();

                                
                            
                        );
                    else 
                        Toast.makeText(SettingsActivity.this,"error on upploading.",Toast.LENGTH_LONG).show();                        
                        mProgressDialog.dismiss();
                
            );

【问题讨论】:

无法解决问题。请清楚 getDownloadUrltask.getResult() 上不再可用,但现在必须在StorageReference filepath 上调用。请参阅此处的 Firebase 文档:firebase.google.com/docs/storage/android/… 或更简单的代码:***.com/questions/51056397/… 【参考方案1】:

试试这个:

filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() 
    @Override
    public void onSuccess(Uri uri) 
        //Do what you need to do with the URL
    
).addOnFailureListener(new OnFailureListener() 
    @Override
    public void onFailure(@NonNull Exception exception) 
        // Handle any errors
    
);

【讨论】:

【参考方案2】:

您必须在getDownloadUrl() 之后添加addOnSuccessListener(),然后在onSuccess() 方法中获取url 字符串。

【讨论】:

以上是关于如何解决方法getDownloadUrl()的主要内容,如果未能解决你的问题,请参考以下文章

如何从 getDownloadURL() 获取 url

AJAX跨域问题解决方法——被调用方解决跨域

Firebase 存储 getDownloadUrl() 方法无法解析

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?