当前位置: 首页 > 知识库问答 >
问题:

如何将Url从Firebase存储库存储到ArrayList?

权承
2023-03-14

这是我的代码-


public class LoggedIn extends AppCompatActivity {
RecyclerView recyclerView;
    
    ArrayList<Uri> Url=new ArrayList<>();
StorageReference storageReference= FirebaseStorage.getInstance().getReference();
    int in;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_logged_in);
        Bundle extras=getIntent().getExtras();
        String value = extras.getString("email");

        for(in=1;in<6;in++){
            storageReference.child(in+".png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {

                    Url.add(in,uri);
                    Log.d("success",String.valueOf(uri));

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d("Failed",String.valueOf(e));
                }
            });


        }
}}

共有1个答案

孟福
2023-03-14

我的猜测是,您在执行url.add(in,uri)之前使用了url列表。

因为getDownloadURL()需要调用服务器,所以它是异步处理的。这意味着您的主代码继续运行,而应用程序在后台等待下载URL。然后,一旦下载URL可用,就用该值调用onsuccess

我将在下面链接一些类似的问题,但需要记住的重要一点是,任何需要下载URL的代码都需要位于onsuccess中,或者从那里调用。

Task[] tasks = new Task[6];
for(in=1;in<6;in++){
    Task task = storageReference.child(in+".png").getDownloadUrl();
    tasks[i] = task;
    task.addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            Url.add(in,uri);
            Log.d("success",String.valueOf(uri));
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d("Failed",String.valueOf(e));
        }
    });
}
Tasks.whenAllSuccess(tasks).addOnSuccessListener(new OnSuccessListener<List<Uri>>() {
    @Override
    public void onSuccess(List<Uri> results) {
        ... you can use `resuls` or `Url` here
    }
})
    null
 类似资料:
  • 我想从FireBase的方法获取下载Url。如何使用以下代码获取下载Url? 我使用了,但这不起作用。

  • 如何将 Firebase 存储文件的下载网址推送到 Firestore 云?我有一个可以将PDF文件上传到Firestore存储的项目,但我无法将上传文件的下载URL推送到Firestore云。 我需要捕获每个文件的上传URL并将其发送到消防库中的文档才能下载它。我正在上传和下载 PDF 文件。 这是我的代码:

  • 我的问题是:当我使用活动存储时,如何从URL上传图像。我在Stackoverflow中使用了来自其他帖子的代码,但传递了model方法,即我需要存储在表中的param。奇怪的是,我收到了下一个错误: 但是当我从这个模型重新加载show视图时,图像显示为存储并部署在我的posts视图中。 在这里我的代码后模型: 这是我在控制器的编辑操作中的代码: 我得到了以下链接,其中谈到了从URL上传图像的机会,

  • 问题内容: 有人可以告诉我,在以下情况下如何进行? 接收文件(MS文件,ODS,PDF) 通过Apache Tika提取公元核心元数据+通过jackrabbit-content-extractors提取内容 使用Jackrabbit将文档(内容)及其元数据存储到存储库中 ? 检索文档+元数据 我对第3点和第4点感兴趣… 详细信息:该应用程序正在以交互方式处理文档(一些分析-语言检测,单词计数等。+

  • 我正在尝试将CSV发送到Firebase云存储中,但不是从用户从他们的文件资源管理器中手动选择文件。相反,点击一个按钮,就会用JavaScript创建一个CSV文件,这就是我想要上传到云存储的内容。 代码片段显示了我是如何创建文件的 乔治