Android 格式化包含国家代码的国际电话号码字符串

Posted

技术标签:

【中文标题】Android 格式化包含国家代码的国际电话号码字符串【英文标题】:Android format an international phone number string with its country code included 【发布时间】:2019-07-25 11:35:54 【问题描述】:

假设我有这个String

String phoneNumber = "+15611234567"

在此处使用PhoneNumberUtils.formatNumber(phoneNumber); 并将其格式化为+1-561-123-4567

但是,当我有一个非美国电话号码时包含其国家/地区代码,例如

String phoneNumber = "+96170123456" //Lebanese phone number

它不起作用,它只是按原样返回而不是格式化。

返回: +96170123456

预期: +961 81-932-452 或任何不同的格式(例如 +961 70 123 456

如果你需要它,下面是不起作用的代码:

public void setPhone(final String phone)
    TextView phoneTV = view.findViewById(R.id.phone);
    String formattedNumber = PhoneNumberUtils.formatNumber(phone);
    phoneTV.setText(formattedNumber);

电话号码的国家代码不一致,可能来自任何国家。

【问题讨论】:

【参考方案1】:

formatNumber (String phoneNo) 此方法在 API 级别 21 中已弃用。

所以对于 API 级别 21 或以上使用:

formatNumber(String phoneNumber, String defaultCountryIso)

【讨论】:

以上是关于Android 格式化包含国家代码的国际电话号码字符串的主要内容,如果未能解决你的问题,请参考以下文章

Android:来电时的电话号码格式,确定国家代码?

Android - 电话号码格式化和删除国家/地区代码

377 是哪个国家的区号

如何拨打国际电话

国际直拨电话号码格式

如何绑定国家/地区更改国际电话输入