intent.resolveActivity()为ACTION_SEND目的返回null

问题描述 投票:0回答:2

[当用户单击我的应用程序中的按钮时,我想在其设备上使用固定的电话号码和示例文本来启动默认的SMS应用程序。

为了实现这一点,我决定遵循the official documentation。我使用了示例代码中的确切功能:

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)始终为空。因此,这永远行不通。是否有比官方文档中更好的方法?

android kotlin android-intent sms
2个回答
0
投票

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

}


0
投票

我找到了一个简单的修复程序,它就像一个超级按钮:

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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.