Location Manager - функция не выбирает провайдера

Моему приложению требуется местоположение, и когда провайдер GPS включен, все работает правильно = я получаю свое местоположение. К сожалению, когда GPS выключен, мое приложение не может связаться с сетевым провайдером, даже если он включен, и я понятия не имею, почему.

После этого на экране Disabled provider Network появляются новости (в это время сеть доступна) и мое приложение вылетает.

Код:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.NO_REQUIREMENT);
        criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);; 

        provider = locationManager.getBestProvider(criteria, false);
        Location location = locationManager.getLastKnownLocation(provider);

        if (location != null) {
            System.out.println("Provider " + provider + " has been selected.");
            onLocationChanged(location);
        } else {
            latituteField = "Location not available";
            longitudeField = "Location not available";
        }
    }

    /* Request updates at startup */
    @Override
    protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(provider,
                400, 1, this);
        needGPS = true;
    }

    /* Remove the locationlistener updates when Activity is paused */
    @Override
    protected void onPause() {
        super.onPause();
        if (needGPS == false || starttime == 0)
            locationManager.removeUpdates(this);
    }

    protected void onStop() {
        super.onPause();
        if (needGPS == false || starttime == 0)
            locationManager.removeUpdates(this);
    }

    @Override
    public void onLocationChanged(Location location) {
        double lat = (double) (location.getLatitude());
        double lng = (double) (location.getLongitude());
        latituteField = (String.valueOf(lat));
        longitudeField = (String.valueOf(lng));
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onProviderDisabled(String provider) {
        Toast.makeText(this, "Disabled provider " + provider,
                Toast.LENGTH_SHORT).show();
    }

Почему сетевой провайдер отключается каждый раз, даже когда сеть на моем Galaxy SII включена?


person krzakov    schedule 10.09.2013    source источник


Ответы (1)


Это может быть проблема с разрешением. Откройте AndroidMaifest.xml и убедитесь, что у вас есть

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    
 <uses-permission android:name="android.permission.INTERNET" />
person user2702899    schedule 10.09.2013
comment
У меня есть еще: ACCESS_COARSE_LOCATION, CCESS_NETWORK_STATE - person krzakov; 10.09.2013