android - 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)
始终为空。因此,这永远行不通。有没有比官方文档中更好的方法来做到这一点?
解决方案
尝试一次,而不是 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)
}
}
推荐阅读
- javascript - JavaScript 按位 & 运算符在意外位置附加 1
- php - 获取大型csv的文件编码
- database - 在 mongo DB 中,如何在单个查询中获取多个计数?
- java - 如何将手动 SQL 行映射与 CrudRepository (Spring Data) 混合使用
- css - SyntaxError:尝试将 Cesium 添加到 React Redux 应用程序时出现意外字符“@”
- javascript - 打字稿类型不可分配给类型:重新分配项目时出错
- java - 字段中的 log4j2 级别扩展
- android - 是什么导致 Android Studio logcat 中的 E/BufferItemConsumer 错误消息?
- r - 如何轻松传播具有重复名称的行?
- recaptcha - 比较:reCaptcha 安全首选项选项