2016-12-12 35 views
43

一切是伟大的工作......直到我回来,从3个月突破9.8工作,并更新了我的火力地堡到10.0.1Android - Firebase - TaskSnapshot - 只应在私人范围内访问方法?

我的电话给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); 
     } 
    } 
}; 

,我现在得到的是关于taskSnapshot.getDownloadUrl()错误。

Android Studio中强调,线红说:

此方法只应该从测试或私人范围内访问

有人能解释为什么发生这种情况?我一整天都在研究整整两天,不能为我的生活弄清楚这一点(令人尴尬)。

此代码用于将文件上传到Firebase存储,然后在完成时(OnSuccess)获取下载URL并将其存储在Firebase数据库中。在我更新到10.0.1之前,这很好用。我在另一个模块中的下载任务中遇到同样的错误。

这里是给你一个更好的视觉我的情况的截图:

enter image description here

+1

我应该补充说,只要将Firebase和Google Play服务更改回9.8.0,所有错误消失。 – Ryan

+0

使用Android Studio时,当我点击一个'TaskSnapshot.getDownloadUrl()'的事件并按下Ctrl-B来查看反编译的类文件时,我看到的声明是'public android.net.Uri getDownloadUrl()'。你也看到了吗? –

+0

我有这个相同的问题。去降级到9.8.0,看看我能不能把事情做好。 – dazza5000

回答

63

的问题似乎是一个过分热心林特检查造成的。尝试这样的:

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

这个伎俩为我工作。如果问题与this bug report有关,那么它应该固定在2.4。

+0

由于某些原因,此注释未使警告消失。 –

+0

很抱歉听到这个!我正在使用Android Studio 2。3与Firebase 10.2.0,我只是再次检查,我可以使警告重新出现,当我删除注释,并消失时,我把注释回来。 –

+0

如果您单击带红色下划线的文本(getDownloadUrl)并按alt-Enter,上下文菜单是否会显示“检查常量”和“资源类型不匹配”选项“?还是它提到了一些其他的检查?如果你点击菜单选项上的向右箭头,它会给你更多的选择(比如“压制声明”)来使警告消失(根据警告的内容,这可能不是明智的)。 –

0

我有同样的问题,当我更新我的Firebase版本时,它已经消失。我正在使用10.0.1,现在我正在使用11.0.0