GPS местоположение не работает - PullRequest
0 голосов
/ 01 июля 2018

Я использую эту функцию для поиска своего местоположения.

    public static String getadrr() {
    String adres = "";
    String bestProvider = null;
    Geocoder geocoder = null;
    List<Address> user = null;
    double lati, longi;
    LocationManager lm = (LocationManager) cx.getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_COARSE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    bestProvider = lm.getBestProvider(criteria, true);

    if (ActivityCompat.checkSelfPermission(cx, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(cx, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

    }
    Location location = lm.getLastKnownLocation(bestProvider);
    if (location == null){
        return "CustomLocation Not found";
    }else{
        geocoder = new Geocoder(cx);
        try {
            user = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
            lati=(double)user.get(0).getLatitude();
            longi=(double)user.get(0).getLongitude();
            adres =(String)user.get(0).getAddressLine(0);
            Log.e("Data","lat : "+lati);
            Log.e("Data","long : "+longi);
            Log.e("Data","adres : "+adres);

        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    return adres;
}

Устройство GPS включено, но эта функция всегда возвращает «CustomLocation Not found», но когда я запускаю приложение Google maps в своем телефоне, эта функция работает нормально. Я не понял причину этой ошибки.

Как это исправить?

1 Ответ

0 голосов
/ 01 июля 2018

getLastKnownLocation почти никогда не должен вызываться. Он вернет результат, только если устройство уже имеет местоположение, и обычно его нет. Вместо этого requestLocationUpdates или requestSingleUpdate ожидают обратного вызова.

...