web-dev-qa-db-ja.com

API 16でPhoneNumberUtils.formatNumber()を使用する

数値をデフォルトの国コードにフォーマットしようとしていますが、その方法はわかっていますが、それを行うと、これはAPI21専用であるというエラーが表示されます。API16をターゲットにしています。古い方法を使用すると、メソッドが非推奨であるというエラー? API 16でそのメソッドを使用するにはどうすればよいですか?

ありがとう!

ドキュメント: http://developer.Android.com/reference/Android/telephony/PhoneNumberUtils.html#FORMAT_NANP

12
Brandon

@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
}
25
GFPF

ドキュメントへのリンクは、参照しているフォーマット方法を識別していません。非推奨のメソッドは formatNumber(String source) だと思います。

「非推奨」の一般的な定義には、将来削除される可能性のある機能が含まれますが、既存のコードを壊すのはAPIからアイテムを削除しないというAndroidポリシーです。この例は AbsoluteLayout で、これはAPIレベル3で非推奨になりましたが、APIの一部のままです。Androidでは、「非推奨」は、代替のより良い方法があることを示しています。同じ結果であり、代わりに使用することを強くお勧めします(可能な場合)。

ここで、改善された代替方法はAPIレベル21でのみ使用できます。より低いAPIレベルのデバイスをサポートするために、非推奨の方法を安全​​に使用できます。すぐになくなることはありません。

もう1つのオプションは、PhoneNumberUtilsの-​​ ソースコード を調べて、その一部を使用して、必要な処理を実行し、サポートする独自のformatNumber()メソッドを作成できるかどうかを確認することです。 API16-おそらく努力する価値はありません。

2
Bob Snyder