電話番号としてフォーマットする必要がある番号があります。私が行った場合
PhoneNumberUtils.formatNumber(numStr);
それから私は得る
888-555-1234
しかし、私が得る必要があるのは
(888) 555-1234
2番目のものを取得するにはどうすればよいですか? 標準のアンドロイドの方法はありますか?
電話番号としてフォーマットする必要がある番号があります。私が行った場合
PhoneNumberUtils.formatNumber(numStr);
それから私は得る
888-555-1234
しかし、私が得る必要があるのは
(888) 555-1234
2番目のものを取得するにはどうすればよいですか? 標準のアンドロイドの方法はありますか?
対象となる国がわかっている場合は、Google のオープン ソース ライブラリlibphonenumberを使用できます。フォーマットする方法は次のとおりです。
String numberStr = "8885551234"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber numberProto = phoneUtil.parse(numberStr, "US");
//Since you know the country you can format it as follows:
System.out.println(phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL));
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
国がわからない場合は、E.164 形式の電話番号numberStr
を使用し、国コードの代わりに null を使用します。
これを使用するだけで、必要なものが得られます。
new PhoneNumberFormattingTextWatcher()
またはこのURLを見てください:
http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
2020 年の実用的なソリューション:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String countryIso = telephonyManager.getNetworkCountryIso().toUpperCase();
phoneNumberTextView.setText(PhoneNumberUtils.formatNumber("3473214567", countryIso));