Java 列表()的问题;Firebase存储的功能
我正在尝试将Firebase存储中的所有图像列出到应用程序。我知道向存储器添加图像和向数据库添加链接的方法,但我的客户不知道这一点。所以当我发现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
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
}
}
}