我正在建立一个全球特定国家的紧急服务屏幕,它们的数字通常不是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
将用户发送到他们的短信应用程序时,会发生同样的问题。这个代码如下
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)
}
我发现问题是我得到的是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))
}
}
希望这有助于某人