Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
Java 列表()的问题;Firebase存储的功能_Java_Android_Firebase_Firebase Storage - Fatal编程技术网

Java 列表()的问题;Firebase存储的功能

Java 列表()的问题;Firebase存储的功能,java,android,firebase,firebase-storage,Java,Android,Firebase,Firebase Storage,我正在尝试将Firebase存储中的所有图像列出到应用程序。我知道向存储器添加图像和向数据库添加链接的方法,但我的客户不知道这一点。所以当我发现Firebase目前允许列出文件夹中的所有图像时。过去两天我一直在做这个,但运气不好 我的活动代码: public class Events_and_Participations extends AppCompatActivity { StorageReference reference; RecyclerView recyclerVi

我正在尝试将Firebase存储中的所有图像列出到应用程序。我知道向存储器添加图像和向数据库添加链接的方法,但我的客户不知道这一点。所以当我发现Firebase目前允许列出文件夹中的所有图像时。过去两天我一直在做这个,但运气不好

我的活动代码:

public class Events_and_Participations extends AppCompatActivity {

    StorageReference reference;
    RecyclerView recyclerView;
    Images_Adapter adapter;
    List<String> items = new ArrayList<>();
    FirebaseAuth auth;
    Button button;
    FirebaseUser user;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_events_and_participations);
        Objects.requireNonNull(getSupportActionBar()).setTitle(R.string.item_title_4);

        button = findViewById(R.id.login);

        auth = FirebaseAuth.getInstance();
        user = FirebaseAuth.getInstance().getCurrentUser();

        if (user == null){
            button.setVisibility(View.VISIBLE);
        }else {
            button.setVisibility(View.INVISIBLE);
        }
        reference = FirebaseStorage.getInstance().getReference("images");

        button.setOnClickListener(v -> auth.signInAnonymously().addOnCompleteListener(task -> {
            if (task.isSuccessful()){
                Toast.makeText(this, "Loading..!!", Toast.LENGTH_SHORT).show();
            }
        }));

        if (user != null){
            reference.listAll()
                    .addOnSuccessListener(listResult -> {

                        for (StorageReference item : listResult.getItems()) {
                            items.add(item.getDownloadUrl().toString());
                        }
                    })
                    .addOnFailureListener(e -> Toast.makeText(Events_and_Participations.this, e.getMessage(), Toast.LENGTH_SHORT).show());
        }



        adapter = new Images_Adapter(items);
        recyclerView = findViewById(R.id.events_photos);
        recyclerView.setAdapter(adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
    }
}
getDownloadUrl()
不直接返回
Uri
,而是返回
任务
。您必须添加一个回调,使用
addOnSuccessListener()
addOnFailureListener()
以获得实际值的通知(就像您对列表本身所做的那样)


您还可以使用
addOnCompleteListener
来处理成功和失败的案例。

您在呼叫参考之前是否进行了身份验证。列表(10)?是的,我进行了。。。!!它只是向我显示了一个空屏幕,没有其他任何内容,甚至没有错误。当.getDownloadUrl()出现时,我发现了问题;它不会返回字符串url,而是返回一个包名,如com.google.package.gms。task@z1562646废话。。废话。。现在帮我解决这个问题。
rules_version = '2';
service firebase.storage {
  match /b/sahrudhaya-foundation.appspot.com/o {
    match /{allPaths=**} {
      allow read, write : if request.auth != null
    }
  }
}