gpt4 book ai didi

java - 我想创建一个多用户登录我的 Android 应用程序

转载 作者:行者123 更新时间:2023-12-01 16:57:12 26 4
gpt4 key购买 nike

我已经为用户创建了一个注册页面。如果用户输入详细信息,它将保存在数据库中。当用户想要登录时,用户将从 firebase 身份验证中进行识别。如果我单击用户名和密码,它只会识别用户。我已经在数据库中创建了一个管理部分,但没有从应用程序注册,我想为管理创建一个单独的用户界面。

我想知道如何从数据库中识别管理员和用户,并为用户和管理员提供单独的 Intent 函数 This is how its display in Database i have create a admin part seperately.

这是登录应用程序的代码

public class MainActivity extends AppCompatActivity {

private EditText Name;
private EditText Password;
private Button Login;
private TextView Info;
private int counter = 5;
private TextView userRegistartion;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private TextView forgotPassword;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();

Name = (EditText) findViewById(R.id.etName);
Password = (EditText) findViewById(R.id.etPassword);
Login = (Button) findViewById(R.id.btnLogin);
Info = (TextView) findViewById(R.id.tvInfo);
userRegistartion = (TextView) findViewById(R.id.tvRegister);
forgotPassword = (TextView) findViewById(R.id.tvForgotPassword);

Info.setText("No of attempts remaining: 5");

//Instance for Firebase authentication forApp
firebaseAuth = FirebaseAuth.getInstance();

progressDialog = new ProgressDialog(this);

//checking in database if user already login or not
FirebaseUser user = firebaseAuth.getCurrentUser();

//if user already logged in move to next activity
if(user != null){
finish();
startActivity(new Intent(MainActivity.this, AdminHome.class));
}

Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
validate(Name.getText().toString().trim(), Password.getText().toString().trim());

}
});

userRegistartion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, Registration.class));
}
});

forgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, PasswordActivity.class));
}
});
}

//Declaring User name and Password
private void validate (String userName, String userPassword){

progressDialog.setMessage("Please wait till you are verified!");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
progressDialog.show();

firebaseAuth.signInWithEmailAndPassword(userName, userPassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
progressDialog.dismiss();
checkEmailVerification();
}else{
Toast.makeText(MainActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
counter--;
Info.setText("No of attempts remaining: " + counter);
progressDialog.dismiss();
if (counter == 0){
Login.setEnabled(false);
}
}
}
});
}

//verifying email
private void checkEmailVerification(){
FirebaseUser firebaseUser = firebaseAuth.getInstance() .getCurrentUser();
Boolean emailflag = firebaseUser.isEmailVerified();

startActivity(new Intent(MainActivity.this, AdminHome.class));

/*if (emailflag){
finish();
startActivity(new Intent(MainActivity.this, Hone.class));
}else{
Toast.makeText(this, "Verify your email", Toast.LENGTH_SHORT).show();
firebaseAuth.signOut();
}*/
}

@Override
public void onBackPressed() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to Exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
MainActivity.super.onBackPressed();
}
})

.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});

AlertDialog alertDialog = builder.create();
alertDialog.show();
}

}

我想为管理员创建一个 Intent ,以了解如何在此代码上创建它以及我应该在哪里更改它?

还有一个错误,当用户单击登录按钮而不输入任何内容时,应用程序将关闭错误是什么?

这是单击按钮时的显示方式

E/AndroidRuntime: FATAL EXCEPTION: main<br>
Process: com.example.lms, PID: 14769<br>
java.lang.IllegalArgumentException: Given String is empty or null<br>
at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(Unknown Source:5)<br>
at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(com.google.firebase:firebase-auth@@19.3.0:205)<br>
at com.example.lms.MainActivity.validate(MainActivity.java:98)<br>
at com.example.lms.MainActivity.access$200(MainActivity.java:25)<br>
at com.example.lms.MainActivity$1.onClick(MainActivity.java:70)<br>
at android.view.View.performClick(View.java:6597)<br>
at android.view.View.performClickInternal(View.java:6574)<br>
at android.view.View.access$3100(View.java:778)<br>
at android.view.View$PerformClick.run(View.java:25885)<br>
at android.os.Handler.handleCallback(Handler.java:873)<br>
at android.os.Handler.dispatchMessage(Handler.java:99)<br>
at android.os.Looper.loop(Looper.java:193)<br>
at android.app.ActivityThread.main(ActivityThread.java:6669)<br>
at java.lang.reflect.Method.invoke(Native Method)<br>
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)<br>
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)<br>

最佳答案

愿这段代码对您有帮助。您必须进行验证检查。

Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Name.getText().toString().equals("")){
Email.setError("Please Enter Vaild Email");
}else if (Password.getText().toString().equals("")){
Password.setError("Please Enter Password");
}else {
validate(Name.getText().toString().trim(), Password.getText().toString().trim());
}
}
});

关于java - 我想创建一个多用户登录我的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61571186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com