Задать вопрос
@User782
Кратко о себе

Почему сразу закрывается приложение?

Почему сразу закрывается приложение?
файл 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()
        }
    }
}
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Сложный 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
xez
@xez
TL Junior Roo
ВАШ ОТВЕТ НА ВОПРОС
Ответ написан
Комментировать
Потому, что где-то в коде ошибка
Ответ написан
Комментировать
@vladis005
Начинающий веб разработчик
Посмотри что пишет в терминалке внизу. Там обычно ошибка красным высвечивается почему фэйл происходит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы