【问题标题】:Firebase Storage "retrieves a long lived download URL" using getDownloadUrl() now deprecatedFirebase 存储使用 getDownloadUrl()“检索长期存在的下载 URL”现已弃用
【发布时间】:2018-10-13 23:55:05
【问题描述】:

getDownloadUrl() 方法在更新到后显示已弃用

'com.google.firebase:firebase-storage:15.0.2'

官方网站上没有其他实现url的方法,那么有什么方法可以用非弃用的方式实现url吗?

/** @deprecated */
@Deprecated
@Nullable
public Uri getDownloadUrl() {
    StorageMetadata var1;
    return (var1 = this.getMetadata()) != null ? var1.getDownloadUrl() : null;
    }
}

【问题讨论】:

  • 您能否具体说明您正在使用的 firebase-storage 版本?我在 15.0.0 的 StorageReference 中没有看到。
  • 更新了问题

标签: java android firebase firebase-storage


【解决方案1】:

在文档中是这样说的:

StorageMetadata 类的 getDownloadUrl()getDownloadUrls() 方法现已弃用。请改用StorageReference 中的getDownloadUrl()

所以你需要使用getDownloadUrl() 里面的StorageReference

public Task<Uri> getDownloadUrl ()

使用可撤销令牌异步检索长期存在的下载 URL。这可用于与其他人共享文件,但如果需要,开发人员可以在 Firebase 控制台中撤消该文件。

更多信息在这里:

https://firebase.google.com/docs/reference/android/com/google/firebase/storage/StorageReference#getDownloadUrl()

【讨论】:

  • 您能否分享指向已弃用的文档的链接。还有一个如何在存储引用中使用 getDownloadUrl 的示例 会很棒
  • 注意,谢谢!
  • 您可以使用taskSnapshot.getStorage().getDownloadUrl()从您的任务中检索您的StorageReference
【解决方案2】:
  final StorageReference filePath = mImageStore.child("profile_images").child("full_image").child(userId + ".jpg");
                filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        //Bitmap hochladen
                        uploadBitMap(uri.toString());
                    }
                });strong text

或者

final UploadTask uploadTask = thumb_file.putBytes(thumb_bite);
        uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                //Url laden
                taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        Map imageUrls = new HashMap();
                        imageUrls.put("image", fullImageUrl);
                        imageUrls.put("thumb_image", uri.toString());
                        //In database
                        mAlarmsDatabaseReference.updateChildren(imageUrls).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                //Progressbar beende + Bild wieder anzeigen
                                progressBar.setVisibility(View.GONE);
                                circleProfilePicture.setVisibility(View.VISIBLE);

                                if(task.isSuccessful()){
                                    Toast.makeText(SettingsActivity.this, getResources().getString(R.string.ProfilbildUpdate), Toast.LENGTH_SHORT).show();
                                }else{
                                    Toast.makeText(SettingsActivity.this, "FAILED", Toast.LENGTH_SHORT).show();
                                }
                            }
                        });
                    }
                });
            }
        });

【讨论】:

    【解决方案3】:

    最终 UploadTask uploadTask = thumb_file.putBytes(thumb_bite); uploadTask.addOnSuccessListener(new OnSuccessListener() { @覆盖 public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                //Url laden
                taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        Map imageUrls = new HashMap();
                        imageUrls.put("image", fullImageUrl);
                        imageUrls.put("thumb_image", uri.toString());
                        //In database
                        mAlarmsDatabaseReference.updateChildren(imageUrls).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                //Progressbar beende + Bild wieder anzeigen
                                progressBar.setVisibility(View.GONE);
                                circleProfilePicture.setVisibility(View.VISIBLE);
    
                                if(task.isSuccessful()){
                                    Toast.makeText(SettingsActivity.this, getResources().getString(R.string.ProfilbildUpdate), Toast.LENGTH_SHORT).show();
                                }else{
                                    Toast.makeText(SettingsActivity.this, "FAILED", Toast.LENGTH_SHORT).show();
                                }
                            }
                        });
                    }
                });
            }
        });
    

    【讨论】:

    • 请编辑您的答案。格式化代码块并添加一些描述。否则您的回答可能会被版主删除。
    猜你喜欢
    • 2021-01-17
    • 2018-09-22
    • 1970-01-01
    • 2021-04-06
    • 2018-08-09
    • 2020-07-30
    • 2020-06-28
    相关资源
    最近更新 更多