Search code examples
androidsetlocale

How to extract location attributes using Geocoder?


When I try to get default locale it returns "zz_ZZ":

countryCode: "ZZ" languageCode: "zz"

Code is:

private String getAddressFromLocation(Location location) {

    Geocoder geoCoder = new Geocoder(this.getApplicationContext(), Locale.getDefault());
    List<Address> matches = null;
    try {
        matches = geoCoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
        Address bestMatch = (matches.isEmpty() ? null : matches.get(0) );

        if (bestMatch != null){
            String fullAddress = bestMatch.getAddressLine(0);
            for (int i = 1; i <= bestMatch.getMaxAddressLineIndex(); i++){
                fullAddress += ", " + bestMatch.getAddressLine(i);
            }
            return fullAddress;
        }else{
            return Constants.EMPTY_STRING;
        }

    } catch (IOException e) {
        ACRA.getErrorReporter().handleSilentException(new MyGeoLocationAddressException(TAG + " ERROR CREATING ADDRESS - " + e.getMessage()));
        return Constants.EMPTY_STRING;
    }
}

Do I need to setDefaultLocale? What does ZZ_zz mean?

Second problem is:

If I use the "ZZ_zz" default locale, I don't get any address but if I use:

Locale.setDefault(Locale.ENGLISH);

I get the exact address.


Solution

  • ZZ_zz is the identifier for the Accented English locale and is mostly used for finding missing translations in your app.

    I don't think there's a best practice on how to handle accented english, but treating it as english would probably be the best option.