intent.resolveActivity () возвращает ноль для намерения ACTION_SEND - PullRequest
0 голосов
/ 15 апреля 2020

Когда пользователь нажимает кнопку в моем приложении, я хочу запустить приложение SMS по умолчанию на своем устройстве с фиксированным номером телефона, а также образец текста.

Чтобы добиться этого, я решил следовать официальная документация . Я использовал точную функцию, которая есть в примере кода:

fun composeMmsMessage() {
    val intent = Intent(Intent.ACTION_SEND).apply {
        data = Uri.parse("smsto:+2340000000000")  // I used a valid phone number in my actual code
        putExtra("sms_body", "Hi there!")
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Я думаю, также стоит упомянуть, что я запускаю это из фрагмента, и я думаю, что packageManager привязано к действию. Кроме того, я протестировал это приложение на трех разных устройствах (два Kitkats, один Oreo).

Однако я заметил, что intent.resolveActivity(packageManager) ВСЕГДА равен нулю. Следовательно, это никогда не работает. Есть ли лучший способ сделать это, чем в официальных документах?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Я нашел простое исправление, которое работает как брелок:

fun composeMmsMessage() {
    val intent = Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "+2340000000000", null)).apply {
        putExtra("sms_body", "Hi there!")
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}
0 голосов
/ 15 апреля 2020

Попробуйте это один раз, вместо ACTION_SEND, используйте ACTION_SENDTO

fun composeMmsMessage() {
val intent = Intent(Intent.ACTION_SENDTO).apply {
    data = Uri.parse("smsto:+2340000000000")  // I used a valid phone number in my actual code
    putExtra("sms_body", "Hi there!")
}
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
}

}

...