Codelabs Friendlychat Firebase教程

时间:2018-07-03 16:17:56

标签: android firebase firebase-storage

我是新成员。我对java以及Firebase在最近几周中还是比较陌生。我试图在代码实验室frebase android教程中迷路,并已完成本课程“第8部分”中要求的最新更新,https://codelabs.developers.google.com/codelabs/firebase-android/#7

在第8部分的结尾,我们被要求在MainActivity.java中添加一个“ putImageInStorage”方法

private void putImageInStorage(StorageReference storageReference, Uri uri, final String key) {storageReference.putFile(uri).addOnCompleteListener(MainActivity.this,
       new OnCompleteListener<UploadTask.TaskSnapshot>() {
           @Override
           public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
               if (task.isSuccessful()) {
                   FriendlyMessage friendlyMessage =
                           new FriendlyMessage(null, mUsername, mPhotoUrl,
                                   task.getResult().getMetadata().**getDownloadUrl()**
                                           .toString());
                   mFirebaseDatabaseReference.child(MESSAGES_CHILD).child(key)
                           .setValue(friendlyMessage);
               } else {
                   Log.w(TAG, "Image upload task was not successful.",
                           task.getException());
               }
           }
       });
}    

但是,当我按照指示运行该IDE时,它无法编译,并引用以下部分作为问题:“ .getDownloadUrl()” 我花了几个小时寻找解决方案,看来这已被“弃用”。我确实尝试按照getDownloadUrl() of firebase storage return the same and wrong link for all the uploaded files. How to fix this?的建议换掉代码行(即使用      * task.getMetadata()。getReference()。getDownloadUrl()。toString()      * 代替 -      * task.getResult()。getStorage()。getDownloadUrl()。toString(),但这似乎不起作用。 然后,我尝试运行在stackoverflow上发现的此方法,但现在它使我的应用程序崩溃(“不幸的是,友好聊天已停止”)

private void putImageInStorage(final StorageReference storageReference, Uri 
uri, final String key) {
    storageReference.putFile(uri).addOnCompleteListener(
            new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    if (task.isSuccessful()) {
                        FriendlyMessage friendlyMessage =
                                new FriendlyMessage(null, mUsername, mPhotoUrl,
                                        task.getResult().getStorage().getDownloadUrl().toString() , mFirebaseUser.getUid());
                        mFirebaseDatabaseReference.child(MESSAGES_CHILD).child(key)
                                .setValue(friendlyMessage);
                    } else {
                        Log.w(TAG, "Image upload task was not successful.",
                                task.getException());
                    }
                }
            });
}

任何解决方案,特别是为绝对新手解释的解决方案,将不胜感激。感谢您抽出宝贵的时间阅读本文档以及任何帮助。

0 个答案:

没有答案