无法从 android 中的经度和纬度获取地址

Can't get address from longitude and latitude in android

我试图从经度和纬度获取我的地址,但是当我试图这样做时,它不起作用。它说 W/System.err﹕ 在 teamtreehouse.com.stromy.MainActivity.getCompleteAddressString(MainActivity.java:163) 在 logcat

这是我试过的方法

private   String getCompleteAddressString() {
    String strAdd = "";
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
        if (addresses != null) {
            Address returnedAddress = addresses.get(0);
            StringBuilder strReturnedAddress = new StringBuilder("");

            for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
                strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
            }
            strAdd = strReturnedAddress.toString();
            //     Log.w("My Current loction address", "" + strReturnedAddress.toString());

        } else {
            //    Log.w("My Current loction address", "No Address returned!");
        }
    } catch (Exception e) {
        e.printStackTrace();
        //  Log.w("My Current loction address", "Canont get Address!");
    }
    return strAdd;
}

我这样称呼它

public void updateDisplay() {
    mLocation.setText(getCompleteAddressString());
}

在 getCompleteAddressString() 方法中,我使用了经度和纬度,我已经从另一种方法获得了它们并且工作正常。两种方法都是 运行 with main activity 。除此以外,其他一切正常,我该如何解决?这个错误的原因是什么?

这样试试:

        Geocoder gcd = new Geocoder(this, Locale.getDefault());
        List<Address> addresses = null;
        Address addr = null;
        try {
            addresses = gcd.getFromLocation(latitude, longitude, 1);
            if (addresses != null && addresses.size() > 0) {
                addr = addresses.get(0);
                String info = "Address is:  ";
                info += addr.getMaxAddressLineIndex() > 0 ? addr
                        .getAddressLine(0) : "";
                info = info + ", " + addr.getLocality() + ", "
                        + addr.getCountryName();
                Toast.makeText(getApplicationContext(), info,
                        Toast.LENGTH_LONG).show();
            } else
                Toast.makeText(getApplicationContext(),
                        "Address not found", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Address not found",
                    Toast.LENGTH_LONG).show();
        }