13

電話番号としてフォーマットする必要がある番号があります。私が行った場合

 PhoneNumberUtils.formatNumber(numStr);

それから私は得る

888-555-1234

しかし、私が得る必要があるのは

(888) 555-1234

2番目のものを取得するにはどうすればよいですか? 標準のアンドロイドの方法はありますか?

4

6 に答える 6

19

対象となる国がわかっている場合は、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 を使用します。

于 2014-01-21T23:14:14.047 に答える
4

これを使用するだけで、必要なものが得られます。

new PhoneNumberFormattingTextWatcher()

またはこのURLを見てください:

http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html

于 2015-02-20T06:44:30.433 に答える
0

2020 年の実用的なソリューション:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

String countryIso = telephonyManager.getNetworkCountryIso().toUpperCase();

phoneNumberTextView.setText(PhoneNumberUtils.formatNumber("3473214567", countryIso));
于 2020-06-02T22:33:19.750 に答える