Я ввел регистрационную форму, которая проверяет наличие дублированного имени пользователя
и отправьте электронное письмо, прежде чем продолжить сохранение информации в базе данных, а также создание ключа авторизации для каждого пользователя.
Я перепробовал почти все, что знаю, но все еще в стеке.
С другой стороны, происходит сбой некоторых устройств при нажатии на форму регистрации
boolean isValid = false;
boolean isValidEmail = false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
// Log.d(TAG, "validBotsRegisterActivityStart " + isValid + " " + isValidEmail );
mAuth = FirebaseAuth.getInstance();
//currentUserID = mAuth.getUid();
{....}
loadingBar = new ProgressDialog(this);
CreateAccountButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
CreateNewAccount();
}
});
}
private void CreateNewAccount()
{
if(TextUtils.isEmpty(password))
{Toast.makeText(this, "Please add a password", Toast.LENGTH_SHORT).show();
}
if (!TextUtils.isEmpty(username))
{
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("UserNames");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if (dataSnapshot.hasChild(username.toLowerCase())) {
isValid = false; }
else {
isValid = true; }
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
if (!TextUtils.isEmpty(email))
{
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Emails");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren())
{
Log.d(TAG, "SnapshotRegister" + data);
if (data.getValue().toString().equals(email))
{
isValidEmail = false;
}
else {
isValidEmail = true;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.d(TAG, "userEmail " + email);
}
if (isValid = true) {
if (isValid != isValidEmail)
{ Log.d(TAG, "CreateNewAccount: isValidStepBeforeSend " + isValid + isValidEmail); }
else { storeUserInformationToDabase(); }
}
}
private void storeUserInformationToDabase()
{
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull final Task<AuthResult> task) {
if (task.isSuccessful()) {
// loadingBar.dismiss();
String s = task.getResult().toString();
Log.d(new String("Register : AuthResult"), s);
if (s != null) {
String auth = FirebaseAuth.getInstance().getCurrentUser().getUid();
Log.d(new String("Register : AuthResultUID"), auth);
StoreInfo(s, auth);
loadingBar.dismiss();
}}}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(new String("Register : Exception"), e.getMessage());
loadingBar.dismiss();
}});
}
private void StoreInfo(String s, String auth) {
loadingBar.setTitle("Registering.. Please wait");
loadingBar.show();
loadingBar.setCanceledOnTouchOutside(true);
HashMap userMap = new HashMap();
userMap.put("username", username);
userMap.put("email", email);
UsersRef.child(auth).updateChildren(userMap)
.addOnCompleteListener(new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
loadingBar.dismiss();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(RegisterActivity.this, "Error: " + e, Toast.LENGTH_SHORT).show();
//Log.d(new String("Register : UsersRefFail"), e);
loadingBar.dismiss();
}
});
Я ожидаю, что процедура начнется и закончится очень быстро, но пользователь должен нажать 2-3 раза очень быстро кнопку регистрации, чтобы начать работать
С устройств, которые выходят из строя, прежде чем приступить к этой деятельности
(из LoginActivity -> RegisterActivity)
Fatal Exception: java.lang.RuntimeException
Canvas: trying to draw too large(132710400bytes) bitmap.
android.view.DisplayListCanvas.throwIfCannotDraw
Журналы от нажатия кнопки регистрации
При первом клике:
2019-06-12 19:33:08.581 4763-4763/apps.stylized D/Register Activity :: userName perdon50
2019-06-12 19:33:08.581 4763-4763/apps.stylized D/Register Activity :: userEmail main@main.com34
{.........}
2019-06-12 19:33:08.784 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
На втором клике:
2019-06-12 19:33:28.995 4763-4763/apps.stylized D/Register Activity :: userName perdon50
2019-06-12 19:33:28.995 4763-4763/apps.stylized D/Register Activity :: userEmail main@main.com34
2019-06-12 19:33:28.997 4763-4763/apps.stylized W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms
2019-06-12 19:33:29.020 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = 123jsadkkakjcmmcom23, value = active }
2019-06-12 19:33:29.020 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.020 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = 6b6na2jrsfdw4XPI402EOeLwUpK2, value = main@main.com }
2019-06-12 19:33:29.020 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.020 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = ATquDl2nmtagb3RgrKaaoho3hJw2, value = main@main.com33 }
{.......}
ps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = vlsMPfiY3dagEjCXH2fyQQSAaWa2, value = kios@kios.com1 }
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = waRZgADTM4OMkFgU5eofSkJhxc62, value = main@main.com8 }
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = xgWeF0QgGGhWJfQMXhwQPdT1HnR2, value = main@main.com32 }
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: SnapshotRegisterDataSnapshot { key = yBDzyMkBE6UQdKx72UcDmSQL5JC3, value = main@main.com111 }
2019-06-12 19:33:29.024 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidEmail True
2019-06-12 19:33:29.226 4763-4763/apps.stylized D/Register Activity :: CreateNewAccount: isValidUsrname True
2019-06-12 19:33:30.299 4763-4813/apps.stylized D/FirebaseAuth: Notifying id token listeners about user ( PhscrFDm9uZnSEpbXhycHyHRSKw1 ).
2019-06-12 19:33:30.299 4763-4813/apps.stylized D/FirebaseAuth: Notifying auth state listeners about user ( PhscrFDm9uZnSEpbXhycHyHRSKw1 ).
2019-06-12 19:33:30.299 4763-4763/apps.stylized D/FirebaseApp: Notifying auth state listeners.
2019-06-12 19:33:30.299 4763-4763/apps.stylized D/FirebaseApp: Notified 1 auth state listeners.
2019-06-12 19:33:30.302 4763-4763/apps.stylized D/Register : AuthResult: com.google.firebase.auth.internal.zze@a968cb6
2019-06-12 19:33:30.302 4763-4763/apps.stylized D/Register : AuthResultUID: PhscrFDm9uZnSEpbXhycHyHRSKw1