Почему сразу закрывается приложение?
файл json добавил в app
все implementation добавлены
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.api.ApiException
import com.google.firebase.messaging.FirebaseMessaging
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.net.HttpURLConnection
import java.net.URL
class MainActivity : AppCompatActivity() {
private lateinit var googleSignInClient: GoogleSignInClient
private val signInLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
val data: Intent? = result.data
handleSignInResult(data)
// Выполнение POST-запроса с использованием Kotlin coroutines
GlobalScope.launch {
sendPostRequest()
}
} else {
// Handle the canceled or failed result here
Toast.makeText(this, "Sign In Failed", Toast.LENGTH_SHORT).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
// Получение токена устройства
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (task.isSuccessful) {
val deviceToken = task.result
// Используйте полученный токен устройства в вашем коде
// Например, передайте его в POST-запрос
} else {
// Обработка ошибки при получении токена устройства
Toast.makeText(this, "Failed to get device token", Toast.LENGTH_SHORT).show()
}
}
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Конфигурация для входа через Google
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build()
// Создание клиента для входа через Google
googleSignInClient = GoogleSignIn.getClient(this, gso)
// Установка обработчика нажатия на кнопку
val signInButton = findViewById<Button>(R.id.signInButton)
signInButton.setOnClickListener { signIn() }
}
// Метод для запуска процесса входа через Google
private fun signIn() {
val signInIntent = googleSignInClient.signInIntent
signInLauncher.launch(signInIntent)
}
// Поле класса для хранения displayEmail
private lateinit var displayEmail: String
private lateinit var displayName: String
// Метод для обработки результата входа через Google
private fun handleSignInResult(intent: Intent?) {
val task = GoogleSignIn.getSignedInAccountFromIntent(intent)
try {
val account = task.getResult(ApiException::class.java)
// Вход успешен. Вы можете выполнить необходимые действия здесь.
// Пример вывода имени пользователя
displayEmail = account?.email ?: ""
displayName = account?.email ?: ""
Toast.makeText(this, "Welcome, $displayName!", Toast.LENGTH_SHORT).show()
} catch (e: ApiException) {
// Вход не удался. Обрабатывайте ошибку здесь.
Toast.makeText(this, "Sign In Failed: ${e.message}", Toast.LENGTH_SHORT).show()
}
}
// Функция для отправки POST-запроса с использованием Kotlin coroutines
private suspend fun sendPostRequest() {
withContext(Dispatchers.IO) {
val url = URL("https://api.qweqwe.life/registration/$displayEmail")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "POST"
// Отправка POST-данных (empty payload)
val outputStream = connection.outputStream
outputStream.close()
val responseCode = connection.responseCode
if (responseCode == HttpURLConnection.HTTP_OK) {
// Обработка успешного ответа
} else {
// Обработка ошибки
}
connection.disconnect()
}
}
}