在Firebase存储中,我有一个名为uploads/
的文件夹。在该文件夹中,我有多个以注册用户的userId
s命名的文件夹。
这就是我想要做的。当用户输入“ProfileActivity”时,如果在uploads /文件夹下有该用户的userId后面的任何文件夹,代码将在Firebase数据库中查找。然后,如果文件夹存在与否,则相应地运行代码。
这是我到目前为止所做的,但这里addValueEventListener
没有解决。我是以正确的方式做到的吗?我在这里缺少什么?
public class ProfileActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private StorageReference mStorageRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
mAuth = FirebaseAuth.getInstance();
mStorageRef = FirebaseStorage.getInstance().getReference("uploads");
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
if (user.isEmailVerified()) {
StorageReference userFolder = mStorageRef.child(userID);
userFolder.addValueEventListener(new ValueEventListener() {
@Override
void onDataChange(DataSnapshot snapshot) {
if (snapshot.exists()) {
// run some code
} else {
//Code
}
}
});
}
}
}
Fire Storage for Firebase没有像Realtime Database这样的事件列表器。您正在尝试执行不受支持的操作(这就是您遇到编译器错误的原因)。请参阅StorageReference的API文档,了解您可以对该对象执行的操作。
最重要的是,无法检查云存储中是否存在“文件夹”。云存储实际上没有任何文件夹。它只包含路径组件看起来像文件夹的文件。
如果您想知道文件是否存在(而不是“文件夹”),那么您可以在引用该文件的StorageReference上使用getMetadata方法。