我正在构建一个应用程序,当用户第一次安装它时,在 MainActivity(Launcher Activity) 中,该应用程序会询问他是哪种类型的用户(假设是 Driver 还是 Rider)?基于用户选择,他被引导到相应的登录屏幕。用户登录后,他定向到 HomeActivity。如果他没有退出就关闭了应用程序,下次他打开应用程序时,他应该直接看到 HomeActivity(基于他选择的用户类型)。对于一位用户,MainActivity 中的代码类似于:
@Override
protected void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null) {
sendToStart();
}
}
private void sendToStart() {
Intent startIntent = new Intent(MainActivity.this,DriverHomeActivity.class);
startActivity(startIntent);
finish();
}
我是 Android 和 Firebase 的新手。我不知道这应该如何为两种类型的用户完成。
创建一个登录屏幕,在该屏幕中用户可以选择工作类型(两个按钮或单选按钮)。
如果他选择Driver,则在数据库中创建一个Driver节点,并使用他写的信息并将他定向到home活动:
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Drivers").child(user.getUid());
ref.child("name").setValue(name);
Intent startIntent = new Intent(MainActivity.this,DriverHomeActivity.class);
startActivity(startIntent);
finish();
对 Rider 也做同样的事情。
如果用户在不注销的情况下关闭应用程序。在应该打开的第一个活动(例如:启动活动)中,检查是否有当前用户并检查用户类型:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference driver = FirebaseDatabase.getInstance().getReference().child("Drivers");
DatabaseReference rider = FirebaseDatabase.getInstance().getReference().child("Riders");
if (user != null) {
driver.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Intent i = new Intent(SplashActivity.this, DriverHomeActivity.class);
startActivity(i);
finish();
} else {
Intent intent = new Intent(SplashActivity.this, RiderHomeActivity.class);
startActivity(intent);
finish();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在splash活动中,它会检查是否有当前用户(如果用户已登录)user.getUid()
将返回当前用户ID,然后它会检查该用户ID是否在该Drivers
节点下,然后将他定向到驱动程序的主页活动.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句