intent.resolveActivity() 为 ACTION_SEND 意图返回 null
intent.resolveActivity() returning null for ACTION_SEND intent
当用户点击我的应用程序中的按钮时,我想在他们的设备上启动带有固定 phone 号码和示例文本的默认短信应用程序。
为了达到这个目的,我决定跟随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
与 activity 相关联。另外,我已经在三种不同的设备上测试了这个应用程序(两个 Kitkats,一个 Oreo)。
但是,我注意到 intent.resolveActivity(packageManager)
总是空的。因此,这永远行不通。有比官方文档更好的方法吗?
尝试一次,而不是 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)
}
}
我发现了一个非常有效的简单修复方法:
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)
}
}
当用户点击我的应用程序中的按钮时,我想在他们的设备上启动带有固定 phone 号码和示例文本的默认短信应用程序。
为了达到这个目的,我决定跟随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
与 activity 相关联。另外,我已经在三种不同的设备上测试了这个应用程序(两个 Kitkats,一个 Oreo)。
但是,我注意到 intent.resolveActivity(packageManager)
总是空的。因此,这永远行不通。有比官方文档更好的方法吗?
尝试一次,而不是 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)
}
}
我发现了一个非常有效的简单修复方法:
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)
}
}