首页 > 解决方案 > intent.resolveActivity() 为 ACTION_SEND 意图返回 null

问题描述

当用户单击我的应用程序中的按钮时,我想在他们的设备上使用固定电话号码和示例文本启动默认 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)始终为空。因此,这永远行不通。有没有比官方文档中更好的方法来做到这一点?

标签: androidkotlinandroid-intentsms

解决方案


尝试一次,而不是 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)
}

}


推荐阅读