【发布时间】:2019-04-21 15:09:19
【问题描述】:
我正在创建一个类似于 WhatsApp 的应用程序,但我遇到了问题。该应用程序应该进入 LoginActivity 但它直接进入 MainActivity 而我没有登录。
我尝试更改 android manifest 中的启动器场景,同样的事情正在发生。我尝试在我的两个loadingBar.dismiss(); 的末尾添加mAuth.signOut();。我试着改变这个
SendUserToMainActivity(); 到这个SendUserToRegisterActivity();。我还删除了 firebase 数据库中的所有帐户。
登录活动:
private FirebaseUser currentUser;
private FirebaseAuth mAuth;
private ProgressDialog loadingBar;
private Button LoginButton, PhoneLoginButton;
private EditText UserEmail, UserPassword;
private TextView NeedNewAccountLink, ForgetPasswordLink;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
InitializeFields();
NeedNewAccountLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SendUserToRegisterActivity();
}
});
LoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AllowUserToLogin();
}
});
}
private void AllowUserToLogin() {
String email = UserEmail.getText().toString();
String password = UserPassword.getText().toString();
if(TextUtils.isEmpty(email)){
Toast.makeText(this, "Please enter your email", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this, "Please enter your password", Toast.LENGTH_SHORT).show();
}
else{
loadingBar.setTitle("Logging In");
loadingBar.setMessage("Please wait...");
loadingBar.setCanceledOnTouchOutside(true);
loadingBar.show();
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
SendUserToMainActivity();
Toast.makeText(LoginActivity.this, "Logged in successfully", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
else{
String message = task.getException().toString();
Toast.makeText(LoginActivity.this, "Error:" + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}
}
private void InitializeFields() {
LoginButton = (Button) findViewById(R.id.login_button);
PhoneLoginButton = (Button) findViewById(R.id.phone_login_button);
UserEmail = (EditText) findViewById(R.id.login_email);
UserPassword = (EditText) findViewById(R.id.login_password);
NeedNewAccountLink = (TextView) findViewById(R.id.need_new_account_link);
ForgetPasswordLink = (TextView) findViewById(R.id.forget_password_link);
loadingBar = new ProgressDialog(this);
}
@Override
protected void onStart() {
super.onStart();
if (currentUser != null){
SendUserToMainActivity();
}
}
private void SendUserToMainActivity() {
Intent loginIntent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(loginIntent);
}
private void SendUserToRegisterActivity() {
Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(registerIntent);
}
AndroidManifest:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".RegisterActivity" />
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"/>
</application>
【问题讨论】:
-
你能出示你的清单吗?
-
OnStart fun 检查当前 user.uid!= Null 否则您将始终获得用户。