获取当前本地货币

时间:2015-02-09 18:11:22

标签: android

我有一个Android应用程序需要使用货币,取决于国家/地区,但我在获取正确的货币时遇到了一些问题。

我的第一个方法就是遵循

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
String price = nf.format(Double.parseDouble(priceEditText.getText().toString()));

问题在于我目前在葡萄牙,但由于我的手机是英语(美国),默认货币是美元,我期待的是欧元。另一方面,它也让我想知道如果,例如,我在像墨西哥这样没有特定设备默认语言的某个国家会发生什么。

然后我上网了,找到了一种使用telphone服务获取国家代码的方法。

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();

此代码效果很好,并且完全符合我的要求但是,当我尝试从中提取货币时,会出现一些奇怪的符号,因为货币设置为XXX。

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();

Locale locale = new Locale(countryCode.toUpperCase());

NumberFormat nf = NumberFormat.getCurrencyInstance(locale);
String price = nf.format(Double.parseDouble(priceEditText.getText().toString()));
Log.d("Currency", "" + nf.getCurrency()); // prints : XXX

最后我的问题是,根据设备区域设置获取货币的最佳方法是什么?这不使用GPS等电池消耗技术。

感谢。

0 个答案:

没有答案