Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-Firebase-TaskSnapshot-Method应仅在私有范围内访问?_Android_Firebase_Firebase Storage - Fatal编程技术网

Android-Firebase-TaskSnapshot-Method应仅在私有范围内访问?

Android-Firebase-TaskSnapshot-Method应仅在私有范围内访问?,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,一切都很顺利。。。直到我休息3个月回来工作,并将Firebase从9.8更新到10.0.1 现在,我对TaskSnapshot的所有调用都给了我一个错误 以下是以前运行良好的示例代码: OnSuccessListener<UploadTask.TaskSnapshot> successListener = new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onS

一切都很顺利。。。直到我休息3个月回来工作,并将Firebase从9.8更新到10.0.1

现在,我对
TaskSnapshot
的所有调用都给了我一个错误

以下是以前运行良好的示例代码:

OnSuccessListener<UploadTask.TaskSnapshot> successListener = new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        attachments.add(fileName + "*-*" + taskSnapshot.getDownloadUrl().toString());

        numberOfCallbacks++;
        if (numberOfFiles == numberOfCallbacks) {
            currentUpload = false;
            onClickSendAlert(sendingView);
        }
    }
};
OnSuccessListener successListener=new OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
add(fileName+“*-*”+taskSnapshot.getDownloadUrl().toString());
numberOfCallbacks++;
if(numberOfFiles==numberOfCallbacks){
currentUpload=false;
onClickSendAlert(sendingView);
}
}
};
我现在遇到的错误是关于
taskSnapshot.getDownloadUrl()

Android Studio用红色标出这条线,并表示:

此方法只能从测试或在私有范围内访问

有人能解释为什么会这样吗?我已经连续两天研究了一整天,但我一辈子都弄不明白这一点(令人尴尬)

值得一提的是,此代码用于将文件上载到Firebase存储,然后当文件上载完成时(
OnSuccess
),它会获取下载URL并将其存储在Firebase数据库中。在我升级到10.0.1之前,这非常有效。我在另一个模块中的下载任务中遇到相同的错误

下面是一个屏幕截图,让您更好地了解我的情况:


这个问题似乎是由过分热心的皮棉检查引起的。试着这样做:

@SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();

这个把戏对我有用。如果问题与有关,则应在2.4中修复。

我也遇到过同样的问题,并且在更新Firebase版本时问题就消失了。我用的是10.0.1,现在我用的是11.0.0,我遇到了同样的问题,而suppressWarnings对我不起作用。 为了获得完整的下载Uri,我使用了以下代码:

ref.putFile(imagePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                     Log.d("URL", uri.toString());
                    // This is the complete uri, you can store it to realtime database
                }
            });
        }
    });
ref.putFile(imagePath).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
ref.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Log.d(“URL”,uri.toString());
//这是完整的uri,您可以将其存储到实时数据库中
}
});
}
});

希望这对别人有帮助

我应该补充一点,一旦我将Firebase和Google Play服务更改回9.8.0,所有错误都会消失。使用Android Studio,当我单击出现的
TaskSnapshot.getDownloadUrl()
并点击Ctrl-B查看反编译的类文件时,我看到的声明是
public Android.net.Uri getDownloadUrl()
。你也看到了吗?我也得到了这个,但我能够构建,所以我不确定为什么它会标记为错误而不是警告。想知道正确的方法是什么。firebase指南甚至在其示例中使用此方法:。一定是疏忽了。不是最好的,但是:disable inspectionFor me此错误出现在android studio 2.3上,在升级之前,我使用10.2.0时没有出现任何问题。出于某种原因,此注释没有使警告消失。很抱歉听到这个消息!我在Firebase 10.2.0上使用Android Studio 2.3,我只是仔细检查了一下,当我删除注释时,警告会重新出现,当我放回注释时,警告会消失。如果你点击红色下划线的文本(getDownloadUrl)并按alt-Enter,上下文菜单会说吗“检查”常量和资源类型不匹配“选项”?或者它是否提到其他检查?如果您单击菜单选项上的右箭头,它将为您提供更多选项(如“抑制for语句”),使警告消失(这可能是可取的,也可能是不可取的,取决于警告的内容)。我没有从alt Enter中获得上下文菜单。但是,我确实通过将注释放在正确的位置来消除错误。我没有将其放在正确的代码块上。谢谢!我最终从开发中休息了很长时间,当我返回并升级到10.2.0时,问题就消失了:)我想时间可以解决一些问题,哈哈。