Я создал страницу регистрации для пользователя. если пользователь введет данные, он сохранится в базе данных. когда пользователь хочет войти в систему, пользователь идентифицируется с помощью firebase auth. если я нажму имя пользователя и пароль, он будет идентифицировать только пользователя. Я создал административную часть в базе данных без регистрации в приложении и хочу создать отдельный пользовательский интерфейс для администратора.
Я хочу знать, как идентифицировать администратора и пользователя из базы данных, и дать отдельную функцию намерения для пользователь и администратор Вот как его отображение в базе данных я создал административную часть отдельно.
И это код для входа в приложение
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();
}
}
я хочу создать намерение для администратора, как я могу создать его в этом коде и где я должен его изменить ??
И это также ошибка, когда пользователь нажимает кнопку входа в систему, не вводя ничего, приложение закрывается. В чем ошибка ??
Вот как это отображается, когда кнопка клики
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>