[英]Cannot keep login in the app exiting after shutting it down
我的应用程序有问题,它要求我在每次冷启动时登录。 我该如何解决这个问题请在下面找到片段的代码
public class SinginFragment extends Fragment {
public SinginFragment() {
// Required empty public constructor
}
private TextView dontHaveAnAccount;
private FrameLayout parentFrameLayout;
private EditText email;
private EditText password;
private TextView forgotPassword;
private ProgressBar progressBar;
private TextView closeBtn;
private Button signInBtn;
// private SharedPreferences preferences;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+.[a-z]+";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_singin, container, false);
dontHaveAnAccount = view.findViewById(R.id.tv_dont_hava_an_account);
parentFrameLayout = getActivity().findViewById(R.id.register_framelayout);
forgotPassword = view.findViewById(R.id.sign_in_forgot_password);
email = view.findViewById(R.id.sign_in_email);
password = view.findViewById(R.id.sign_in_password);
progressBar = view.findViewById(R.id.sign_in_progresbar);
closeBtn = view.findViewById(R.id.sign_in_close_btn);
signInBtn = view.findViewById(R.id.sign_in_btn);
firebaseAuth = FirebaseAuth.getInstance();
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
dontHaveAnAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFragment(new SignupFragment());
}
});
forgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RegisterActivity.onResetPasswordFragment = true;
setFragment(new ResetPasswordFragment());
}
});
closeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainIntent();
}
});
email.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
checkInputs();
}
@Override
public void afterTextChanged(Editable s) {
}
});
password.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
checkInputs();
}
@Override
public void afterTextChanged(Editable s) {
}
});
signInBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkEmailAndPassword();
}
});
}
private void setFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_from_right,R.anim.slideout_from_left);
fragmentTransaction.replace(parentFrameLayout.getId(),fragment);
fragmentTransaction.commit();
}
private void checkInputs() {
if (!TextUtils.isEmpty(email.getText())){
if (!TextUtils.isEmpty(password.getText())){
signInBtn.setEnabled(true);
signInBtn.setTextColor(Color.rgb(255,255,255));
}else {
signInBtn.setEnabled(false);
signInBtn.setTextColor(Color.argb(50,255,255,255));
}
}else {
signInBtn.setEnabled(false);
signInBtn.setTextColor(Color.argb(50,255,255,255));
}
}
private void checkEmailAndPassword(){
if (email.getText().toString().matches(emailPattern)){
if (password.length() >=8){
progressBar.setVisibility(View.VISIBLE);
signInBtn.setEnabled(false);
signInBtn.setTextColor(Color.argb(50,255,255,255));
firebaseAuth.signInWithEmailAndPassword(email.getText().toString(),password.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
// if (firebaseAuth != null){
mainIntent();
}else {
progressBar.setVisibility(View.INVISIBLE);
signInBtn.setEnabled(false);
signInBtn.setTextColor(Color.rgb(255,255,255));
String error = task.getException().getMessage();
Toast.makeText(getActivity(), error, Toast.LENGTH_SHORT).show();
}
/* }else{
Toast.makeText(getActivity(), "Incorrect email or password",Toast.LENGTH_SHORT).show();
}
*/
}
});
}else{
Toast.makeText(getActivity(), "Incorrect email or password",Toast.LENGTH_SHORT).show();
}
}else {
Toast.makeText(getActivity(), "Incorrect email or password",Toast.LENGTH_SHORT).show();
}
}
private void mainIntent(){
Intent mainIntent = new Intent(getActivity(), MainActivity.class);
startActivity(mainIntent);
getActivity().finish();
}
}
下面在我的第二个用例中:我尝试了两种方式的代码,但仍然有同样的问题
public class loginActivity extends AppCompatActivity {
public AdView mAdView;
EditText emailBox, passwordBox;
TextView forgetPassword;
ImageView loginAc;
ImageView createAc;
ImageView donationAc1;
FirebaseAuth auth;
FirebaseUser currentUser;
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
getSupportActionBar().hide();
dialog = new ProgressDialog(this);
dialog.setMessage("Please wait...");
auth = FirebaseAuth.getInstance();
emailBox = findViewById(R.id.emailBox);
passwordBox = findViewById(R.id.passwordBox);
forgetPassword = findViewById(R.id.forgotPass);
loginAc = findViewById(R.id.loginIm);
createAc = findViewById(R.id.creatIm);
donationAc1 = findViewById(R.id.donationIcons1);
currentUser = auth.getCurrentUser();
loginAc.setOnClickListener(v -> {
dialog.show();
String email, password;
email = emailBox.getText().toString();
password = passwordBox.getText().toString();
auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// dialog.dismiss();
if (task.isSuccessful()) {
///////////////////
if (auth != null) {
startActivity(new Intent(loginActivity.this, DashboardActivity.class));
}else {
// dialog.dismiss();
Toast.makeText(loginActivity.this, "Wrong enter or you not have account yet.", Toast.LENGTH_SHORT).show();
}
/////////////////
}
else {
// dialog.dismiss();
Toast.makeText(loginActivity.this, "Wrong enter or you not have account yet.",Toast.LENGTH_SHORT).show();
}
}
});
});
forgetPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText resetPassword = new EditText(v.getContext());
final AlertDialog.Builder passwordResetDialog = new AlertDialog.Builder(v.getContext());
passwordResetDialog.setTitle("Reset Password ?");
passwordResetDialog.setMessage("Enter Your Email.");
passwordResetDialog.setView(resetPassword);
passwordResetDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// extract the email and send reset link
String newPassword = resetPassword.getText().toString();
auth.sendPasswordResetEmail(newPassword).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(loginActivity.this, "Password Reset Successfully.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(loginActivity.this, "Password Reset Failed.", Toast.LENGTH_SHORT).show();
}
});
}
});
passwordResetDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// close
}
});
passwordResetDialog.create().show();
}
});
createAc.setOnClickListener((v) -> {
startActivity(new Intent(loginActivity.this, singupActivity.class));
});
donationAc1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent donationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.paypal.me/igoldday"));
startActivity(donationIntent);
}
});
}
}
任何人都可以帮我解决这个问题。
这是一个示例代码,我用来检查我的启动屏幕上是否有当前用户登录。 你可以使用它
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
if (Objects.requireNonNull(mAuth.getCurrentUser()).isEmailVerified())
{
// User is signed in
startActivity(new Intent(Splash.this,MainActivity.class));
}
} else {
// User is signed out
startActivity(new Intent(Splash.this,LoginActivity.class));
finish();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.