Как я могу определить момент или результат отправки электронной почты из почтового приложения? - PullRequest
0 голосов
/ 21 марта 2020

Я хотел бы получить результат, если пользователь отправил электронное письмо или нет.

Мое приложение открывает меню Chooser для выбора приложения электронной почты.

Это то, что я реализовал:

composeEmail(arrayOf("youremail@gmail.com", subject, body)
    fun composeEmail(addresses: Array<String>, subject: String, body: String) {
        val intent = Intent(Intent.ACTION_SENDTO).apply {
            data = Uri.parse("mailto:") // only email apps should handle this
            putExtra(Intent.EXTRA_EMAIL, addresses)
            putExtra(Intent.EXTRA_SUBJECT, subject)
            putExtra(Intent.EXTRA_TEXT, body)
        }

        if (intent.resolveActivity(packageManager) != null) {
            try {
                startActivity(Intent.createChooser(intent, "Send mail...")))
            } catch (ex: ActivityNotFoundException) {
                Toast.makeText(this@MainActivity, "There are no email clients installed.", Toast.LENGTH_SHORT).show()
            }
        }
    }

Я мог бы sttartActivityForResult () сделать так, как startActivityForResult(Intent.createChooser(intent, "Send mail..."), 0) Однако Intent.ACTION_SENDTO, Intent.ACTION_SEND не возвращают результат. Это всегда дает Activity.RESULT_CANCELED

Я проверил это с помощью этого кода:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == RESULT_SEND_EMAIL) {
            if (resultCode == Activity.RESULT_OK) {
                Toast.makeText(this, "Success: $resultCode", Toast.LENGTH_SHORT).show()
                // TODO: I want to do something here.
            }else if(resultCode == Activity.RESULT_CANCELED) {
                Toast.makeText(this, "Canceled: $resultCode", Toast.LENGTH_SHORT).show()
            }else{
                Toast.makeText(this, "what?: $resultCode", Toast.LENGTH_SHORT).show()
            }
        }
    }

Есть ли способ узнать, отправил ли пользователь электронное письмо или нет? Я хотел бы вызывать некоторые функции только тогда, когда они отправлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...