List() 的问题;Firebase Storage 的函数



我正在尝试列出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());
}
}

我的存储规则:

rules_version = '2';
service firebase.storage {
match /b/sahrudhaya-foundation.appspot.com/o {
match /{allPaths=**} {
allow read, write : if request.auth != null
}
}
}
getDownloadUrl()

不直接返回Uri,而是返回Task<Uri>。您必须添加一个回调,addOnSuccessListener()addOnFailureListener()将通知实际值(就像您对列表本身所做的那样(。

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

最新更新