Android 获取当前本地货币

Android 获取当前本地货币,android,Android,我有一个Android应用程序,需要使用货币,这取决于国家,但我在获得正确的货币方面遇到了一些困难 我的第一个方法是做以下事情 NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault()); String price = nf.format(Double.parseDouble(priceEditText.getText().toString())); 问题是,我现在在葡萄牙,但因为我的手机是英语(美国),默认货

我有一个Android应用程序,需要使用货币,这取决于国家,但我在获得正确的货币方面遇到了一些困难

我的第一个方法是做以下事情

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.getDefault());
String price = nf.format(Double.parseDouble(priceEditText.getText().toString()));
问题是,我现在在葡萄牙,但因为我的手机是英语(美国),默认货币是美元,我期望的是欧元。另一方面,这也让我想知道,如果我在墨西哥这样没有特定设备默认语言的国家,会发生什么

然后我上网,找到了一种通过电话服务获取国家代码的方法

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等耗电技术


谢谢。

也许这对你有帮助这很有帮助,我已经考虑过了,但我想买些更干净的东西。就像那样,每当我想使用货币时,我都必须建立一张地图。对于那些没有默认系统语言的国家来说,这并不能解决问题,比如墨西哥和西班牙文。不是每次你都可以将它们保存在db或共享首选项中,在应用程序启动时加载它们。如果没有其他解决方案,我会这样做。谢谢