Я новичок в Kotlin, я хочу создать мобильное приложение для Android. Я использую Android studio 3.3, уровень API Android 28. Я использовал сваггер, чтобы получить весь свой веб-сервис RESTful, поэтому у меня есть android-client-генерируется файл, который содержит все веб-службы.Для начала я создал интерфейс Android для аутентификации по электронной почте и паролю ». Среди доступных веб-сервисов« apiMobileUsersGetByFireBaseIDGet ». В этом Ws для идентификации используется идентификатор firebase.
Я создаю класс kotlin AUthentication, как показано ниже:
class Authentication : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_authentication)
var email = editTextEmail.text
var password = editTextPassword.text
FirebaseApp.initializeApp(this@Authentication)
val auth = FirebaseAuth.getInstance()
buttonlogin.setOnClickListener {
auth.signInWithEmailAndPassword(email.toString(), password.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
println("success")
if (verifyAvailableNetwork(this@Authentication)) {
try {
CoroutineScope(Dispatchers.Main).launch {
val user = MobileApi().apiMobileUsersGetByFireBaseIDGet(auth.currentUser!!.uid)
if (user == UsersData()) {
var intent = Intent(this@Authentication, MainActivity::class.java)
intent.putExtra("id", auth.currentUser?.email)
startActivity(intent)
}
}
} catch (e: ClientException) {
println("4xx response calling apiMobileUsersGetByFireBaseIDGet")
e.printStackTrace()
} catch (e: ServerException) {
println("5xx response calling apiMobileUsersGetByFireBaseIDGet ")
e.printStackTrace()
}
}
} else {
println("Error: ${task.exception?.message}")
}
}
}
}
}
я добавил разрешение на доступ к Интернету в AndroidManifest.xml. Моя проблема в том, что когда я запускаю свое приложение на своем мобильном телефоне, возникает NetworkOnMainThreadException. Я несколько раз пытался исправить эту ошибкуЯ действительно застрял. Описание ошибки следующим образом:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.homecraft, PID: 32245
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1285)
at java.net.InetAddress.lookupHostByName(InetAddress.java:434)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:255)
at java.net.InetAddress.getAllByName(InetAddress.java:218)
at okhttp3.Dns$Companion$SYSTEM$1.lookup(Dns.kt:48)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:157)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:122)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:70)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:203)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:76)
at okhttp3.internal.connection.Transmitter.newExchange$okhttp(Transmitter.kt:162)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:36)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:117)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:90)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:84)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:117)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:90)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:117)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:71)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:117)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:90)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.kt:184)
at okhttp3.RealCall.execute(RealCall.kt:67)
at io.swagger.client.apis.MobileApi.apiMobileUsersGetByFireBaseIDGet(MobileApi.kt:4096)
at com.app.homecraft.Authentication$onCreate$1$1$1.invokeSuspend(Authentication.kt:38)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
at android.os.Handler.handleCallback(Handler.java:743)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5639)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)