Намерение Dial Pad и SMS APP загружают неправильные номера - PullRequest
0 голосов
/ 30 августа 2018

Я строю экран для экстренных служб из определенных стран мира, и их номера обычно не состоят из 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)
    }

Этот код выводит пользователя на панель набора, однако он вводит совершенно другой номер. После отладки немного больше похоже, что что-то меняет число с буквально строки на другое случайно сгенерированное число. Есть идеи, почему это так?

Та же проблема возникает, когда я пытаюсь отправить пользователя в его приложение SMS через 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)
    }

1 Ответ

0 голосов
/ 31 августа 2018

Я обнаружил, что проблема заключалась в том, что я получал идентификатор, а не фактическое число:

вот код перед:

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))
        }

    }

Надеюсь, это кому-нибудь поможет

...