4

我想知道在拨出电话时是否可以将电话号码转换为国际格式。

例如,如果一个法国用户(对不起,这是我知道的唯一格式,我不会犯错 :-) 尝试使用国家格式调用:01.47.12.34.56,那么一个方法会将其转换为国际格式,如下所示: +33.1.47.12.34.56

我查看了 PhoneNumberUtils 的文档,但我不知道是否有一种方法可以满足我的要求。

4

3 回答 3

6

旧帖子,但如果它对任何人有帮助:使用谷歌的libphonenumber库对电话号码进行各种格式化和验证。在这种特殊情况下,要转换为国际格式,请使用同一库中的format(PhoneNumber number, PhoneNumberFormat format)类中的 api 。PhoneNumberUtil

于 2012-07-30T14:25:56.023 回答
0

数字不是以字符串形式出现的吗?

如果我没记错的话,使用 Java 的字符串方法你可以自己轻松地做到这一点?

所以获取字符串,去掉 0 并添加 +33

于 2010-02-12T17:33:26.307 回答
0

使用此方法将您的本地号码转换为国际格式,我正在使用谷歌库https://github.com/google/libphonenumber作为(Aswin Kumar)提到

爪哇

   public static String formatPhoneNumber(String phoneNumber) {
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
    Phonenumber.PhoneNumber formattedNumber = null;
    String formatted = null;

    try {
        TelephonyManager manager = (TelephonyManager) sContext.getSystemService(Context.TELEPHONY_SERVICE);
        String countryCode = manager.getNetworkCountryIso();
        formattedNumber = phoneUtil.parse(phoneNumber, countryCode.toUpperCase());
        formatted = phoneUtil.format(formattedNumber, PhoneNumberUtil.PhoneNumberFormat.E164);
        return formatted;
    } catch (NumberParseException e) {
        e.printStackTrace();
    }
    return null;
}

科特林

    private fun formatNumber(number: String?) {
    val phoneUtil = PhoneNumberUtil.getInstance()
    var formattedNumber: PhoneNumber? = null
    var formatted: String? = null
    try {
        val manager = applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        val networkCountryIso: String = manager.networkCountryIso
        Log.i("SERVICE " , "ISO "+ networkCountryIso)
        formattedNumber = phoneUtil.parse(number, networkCountryIso.toUpperCase())
        formatted = phoneUtil.format(formattedNumber, PhoneNumberUtil.PhoneNumberFormat.E164)
        Log.i("SERVICE " , "phone number"+ formatted)
        findCallerId(formatted)
    } catch (e: NumberParseException) {
        e.printStackTrace()
    }
}
于 2020-12-10T10:11:20.400 回答