我正在建立一个屏幕,其中包含来自全球特定国家/地区的紧急服务,其电话号码通常不超过10位数字,
示例:Australia = 13 11 14
和UK plus ROI = 116 123
我希望用户单击这些数字,然后将其带到拨号盘上,无论其语言环境如何。 这是我到目前为止的内容:
fun openDialApp(phoneNumber: String) {
val dialIntent = Intent(Intent.ACTION_DIAL)
dialIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
dialIntent.data = Uri.parse("tel:" + Uri.encode(phoneNumber))
startActivity(context, dialIntent, Bundle.EMPTY)
}
此代码确实将用户带到拨号盘,但是它输入的号码完全不同。调试之后,似乎有一些改变,将数字从字面上的字符串更改为其他随机生成的数字。有什么想法为什么会这样吗?
当我尝试通过American helpline number = 741741
将用户发送到他们的SMS应用程序时,发生相同的问题。的代码如下
fun openSmsApp(smsNumber: String) {
val smsIntent = Intent(Intent.ACTION_SENDTO)
smsIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
smsIntent.data = Uri.parse("smsto:" + Uri.encode(smsNumber))
startActivity(context, smsIntent, Bundle.EMPTY)
}
答案 0 :(得分:0)
我发现问题是我正在获取ID而不是实际号码:
以下是之前的代码:
private fun bindViews() {
header.leftIconView.clicks().bindToWithDispose(disposables) {
viewModel.goBack()
}
lifelineAustraliaNumber.clicks().bindToWithDispose(disposables) {
viewModel.openDialApp(R.string.lifeline_australia_number.toString())
}
mentalHealthAmericaTextNumber.clicks().bindToWithDispose(disposables) {
viewModel.openSmsApp(R.string.mental_health_america_text_number.toString())
}
samaritansNumber.clicks().bindToWithDispose(disposables) {
viewModel.openDialApp(R.string.samaritans_number.toString())
}
}
以下是以下代码:
private fun bindViews() {
header.leftIconView.clicks().bindToWithDispose(disposables) {
viewModel.goBack()
}
lifelineAustraliaNumber.clicks().bindToWithDispose(disposables) {
viewModel.openDialApp(context.resources.getString(R.string.lifeline_australia_number))
}
mentalHealthAmericaTextNumber.clicks().bindToWithDispose(disposables) {
viewModel.openSmsApp(context.resources.getString(R.string.mental_health_america_text_number))
}
samaritansNumber.clicks().bindToWithDispose(disposables) {
viewModel.openDialApp(context.resources.getString(R.string.samaritans_number))
}
}
希望这对某人有帮助