【问题标题】:Using PhoneNumberUtils.formatNumber() on API 16在 API 16 上使用 PhoneNumberUtils.formatNumber()
【发布时间】:2016-04-03 23:06:32
【问题描述】:

我正在尝试将数字格式化为默认国家/地区代码,我知道如何操作,但是当我这样做时,会出现一个错误,指出这仅适用于 API 21。我的目标是 API 16。如果我使用旧方法,我收到一条错误消息,说该方法已弃用?如何在 API 16 上使用该方法?

谢谢!

文档:http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html#FORMAT_NANP

【问题讨论】:

    标签: android api country


    【解决方案1】:

    @qbix 提到的不推荐使用方法的以下示例。

    一个好的做法是检查sdk的级别以使用正确的方法:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        yourTextView.setText(PhoneNumberUtils.formatNumber(yourStringPhone, Locale.getDefault().getCountry()));
    } else {
        yourTextView.setText(PhoneNumberUtils.formatNumber(yourStringPhone)); //Deprecated method
    }
    

    【讨论】:

      【解决方案2】:

      您的文档链接无法识别您所指的格式方法。我猜不推荐使用的方法是formatNumber(String source)

      虽然“已弃用”的一般定义包括该功能可能在未来某个时间被删除,但 Android 的政策是不从 API 中删除会破坏现有代码的项目。这方面的一个例子是AbsoluteLayout,它在 API 级别 3 中已被弃用,但仍然是 API 的一部分。在 Android 中,“已弃用”表示存在替代的、更好的方法来实现相同的结果,强烈建议您改用它(如果可能的话)。

      这里,改进的替代方法仅在 API 级别 21 中可用。要支持 API 级别较低的设备,您可以安全地使用已弃用的方法。它不会很快消失。

      另一种选择是检查source codePhoneNumberUtils,看看您是否可以使用其中的一部分来创建自己的formatNumber() 方法,该方法可以满足您的需求并支持API 16——可能不值得付出努力。

      【讨论】:

        【解决方案3】:

        这适用于所有版本,可能是因为向后兼容支持:

        yourTextView.setText(PhoneNumberUtils.formatNumber(yourStringPhone, Locale.getDefault().getCountry()));
        

        【讨论】:

          猜你喜欢
          • 2021-05-11
          • 1970-01-01
          • 1970-01-01
          • 2013-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多