2014-12-16 10 views
0

위치를 가져오고 사용자 도시의 날씨를 가져 오는 앱이 있습니다. 날씨는 도시 이름 (구체적인 이름이어야 함)에서 가져옵니다. 나는 다음과 같은 코드를 사용하여 위치 : "탄타, Qesm 2"난 그냥 싶다 "탄타"를 반환도시명 가져 오기 위치에서

LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener locLis = new MyLocationListener(); 
    locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      locLis); 
    Location location = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    response.setText("Last Known Location Is " + location); 
    try { 

     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 


     Geocoder geocoder = new Geocoder(MainActivity.this,Locale.getDefault()); 
     List<Address> addresses = geocoder.getFromLocation(latitude,longitude, 1); 

     address = addresses.get(0).getAddressLine(0); 
     city = addresses.get(0).getAddressLine(1); 
     country = addresses.get(0).getCountryName(); 

     String text = "Location from Last: " + address + " ," + city + " ," + country; 

     response.setText(text); 

    } catch (Exception e) { 
     response.setText("Location Exception : " + e); 
    } 

을, 나 또한 addresses.get (0) .getLocality를 (사용하려고)하지만 null을 반환 지역이 알려지지 않았기 때문에 ..

그럼, 어떤 아이디어? :)

답변

0

addresses.get (0) .getLocality()는 지역 정보를 반환해야합니다. "Tanta, Qesm 2"에 대해 null을 반환하면이 특정 위치에 사용할 수있는 지역이 없음을 의미합니다.

주소 목록을 반복하여 지역 정보가 있는지 확인할 수도 있습니다.

for(Address a: addresses){ 
    if(a.getLocality != null){ 
     // take this one 
    } 
} 
+0

감사하지만 작동하지 않았습니다. ( –

+0

subLocality, subAdminArea 등의 다른 값을 디버그하고 볼 수 있습니까? – kamoor