对不起-我对Kotlin和Android sdk非常陌生,但我希望这意味着这将是一个很容易解决的问题!
当为我的应用程序使用注册页面时,每次我尝试使用无效的电子邮件地址(例如:“.addOnFailureListener”)进行注册时,应用程序都会崩溃,我已经创建了一个测试(在下面的代码底部可见)-但我仍然收到一个错误消息“电子邮件地址格式不佳”。我的应用程序似乎在我的"Toast.makeText“有机会向用户解决这个问题之前崩溃了。如果电子邮件地址不是有效的,有没有办法完全停止注册?或者,有没有其他方法可以解决这个问题?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
register_button_register.setOnClickListener {
performRegister()
}
already_have_account_text_view.setOnClickListener {
Log.d("MainActivity", "Try to show login activity")
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}
}
private fun performRegister() {
val email = email_edittext_register.text.toString()
val password = password_edittext_register.text.toString()
if (email.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "Please enter your email and password", Toast.LENGTH_SHORT).show()
return
}
Log.d("MainActivity", "Email is: " + email)
Log.d("MainActivity", "Password: $password")
FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
.addOnCompleteListener {
if (it.isSuccessful) return@addOnCompleteListener
Log.d("Main", "Successfully created user with uid: ${it.result.user.uid}")
}
.addOnFailureListener{
Log.d("Main", "Failed to create user: ${it.message}")
Toast.makeText(this, "Please enter a valid email and password", Toast.LENGTH_SHORT).show()
}
}
这是我面临的错误消息:
2019-03-12 22:04:48.112 29082-29082/com.example.messenger E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.messenger, PID: 29082
com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: The email address is badly formatted.
at com.google.android.gms.tasks.zzu.getResult(Unknown Source:21)
at com.example.messenger.MainActivity$performRegister$1.onComplete(MainActivity.kt:51)
at com.google.android.gms.tasks.zzj.run(Unknown Source:23)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: The email address is badly formatted.
at com.google.firebase.auth.api.internal.zzce.zzb(Unknown Source:223)
at com.google.firebase.auth.api.internal.zzbb.zza(Unknown Source:42)
at com.google.firebase.auth.api.internal.zzcy.zzc(Unknown Source:11)
at com.google.firebase.auth.api.internal.zzdb.onFailure(Unknown Source:35)
at com.google.firebase.auth.api.internal.zzci.dispatchTransaction(Unknown Source:83)
at com.google.android.gms.internal.firebase_auth.zzb.onTransact(Unknown Source:22)
at android.os.Binder.execTransact(Binder.java:731)
2019-03-12 22:04:48.114 1882-2869/? W/ActivityManager: Force finishing activity com.example.messenger/.MainActivity
2019-03-12 22:04:48.149 1882-1955/? W/InputDispatcher: channel '37860b6 com.example.messenger/com.example.messenger.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
2019-03-12 22:04:48.149 1882-1955/? E/InputDispatcher: channel '37860b6 com.example.messenger/com.example.messenger.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2019-03-12 22:04:48.154 1882-4213/? I/WindowManager: WIN DEATH: Window{37860b6 u0 com.example.messenger/com.example.messenger.MainActivity}
2019-03-12 22:04:48.154 1882-4213/? W/InputDispatcher: Attempted to unregister already unregistered input channel '37860b6 com.example.messenger/com.example.messenger.MainActivity (server)'
2019-03-12 22:04:48.160 1723-1747/? W/SurfaceFlinger: Attempting to set client state on removed layer: com.example.messenger/com.example.messenger.MainActivity#0
2019-03-12 22:04:48.160 1723-1747/? W/SurfaceFlinger: Attempting to destroy on removed layer: com.example.messenger/com.example.messenger.MainActivity#0
2019-03-12 22:04:48.164 1723-1776/? W/SurfaceFlinger: Attempting to destroy on removed layer: AppWindowToken{4e2ac9 token=Token{5d60ad0 ActivityRecord{626da93 u0 com.example.messenger/.MainActivity t37}}}#0
2019-03-12 22:04:49.332 27898-27898/? I/Choreographer: Skipped 34 frames! The application may be doing too much work on its main thread.
2019-03-12 22:04:49.426 1882-1936/? I/Choreographer: Skipped 39 frames! The application may be doing too much work on its main thread.
2019-03-12 22:04:49.426 2609-2609/? I/Choreographer: Skipped 41 frames! The application may be doing too much work on its main thread.
2019-03-12 22:04:49.439 2021-2021/? I/Choreographer: Skipped 55 frames! The application may be doing too much work on its main thread.
有人能理解这一点吗?抱歉,我知道这是一个很长的错误,但也许它对某些人来说意味着什么。
发布于 2019-03-13 06:23:32
在发送之前验证电子邮件字符串是否为有效电子邮件,例如使用this method
https://stackoverflow.com/questions/55131404
复制相似问题