首页 > 解决方案 > task.getResult().getDownloadUrl() 方法不起作用

问题描述

private void storeFirestore(@NonNull Task<UploadTask.TaskSnapshot> task, String user_name) 
{

    Uri download_uri;

    if(task != null) {

        download_uri = task.getResult().getDownloadUrl();

    } else {

        download_uri = mainImageURI;

    }

    Map<String, String> userMap = new HashMap<>();
    userMap.put("name", user_name);
    userMap.put("image", download_uri.toString());

    firebaseFirestore.collection("Users").document(user_id).set(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {

            if(task.isSuccessful()){

                Toast.makeText(SetupActivity.this, "The user Settings are updated.", Toast.LENGTH_LONG).show();
                Intent mainIntent = new Intent(SetupActivity.this, MainActivity.class);
                startActivity(mainIntent);
                finish();

            } else {

                String error = task.getException().getMessage();
                Toast.makeText(SetupActivity.this, "(FIRESTORE Error) : " + error, Toast.LENGTH_LONG).show();

            }

            setupProgress.setVisibility(View.INVISIBLE);

        }
    });


}

getDownloadUrl 没有在它下面的红线处工作,或者是 downloadUrl 需要为它添加一个方法。

标签: android

解决方案


在 Firebase 存储 API 版本 16.0.1 中。getDownloadUrl() 方法在如下使用时不起作用 download_uri = task.getResult().getDownloadUrl();

因此,我们需要使用存储引用才能使用 getDownloadUrl() 方法,如下所示:


final UploadTask uploadTask = filepath.putFile(resultUri);

uploadTask.addOnSuccessListener(new OnSuccessListener<TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                String download_url = uri.toString();
                            }
                        });
                    }
                });`

推荐阅读