На Nexus 7 происходит сбой, но на Nexus 4 и 5 работает нормально

У меня есть приложение, которое определяет местоположение пользователей на карте. Это успешно работает на обоих Nexus 4 и 5, но больше не будет работать на моем Nexus 7.

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

Я вернул устройство к заводским настройкам и запустил все обновления на нем.

Вот код из моего метода onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);
    Criteria criteria = new Criteria();
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    double lat =  location.getLatitude();
    double lng = location.getLongitude();
    LatLng coordinate = new LatLng(lat, lng);
    CameraUpdate center = CameraUpdateFactory.newLatLng(coordinate);
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(16);
    map.moveCamera(center);
    map.animateCamera(zoom);
}

Это говорит о том, что я получаю исключение NullPointerException в ** ** double lat = location.getLatitude();

Я мог бы понять проблему, если бы это произошло на всех моих устройствах, но я не могу понять, почему именно это одно устройство (и особенно после того, как оно сработало ранее)?

2 ответа

Решение

Согласно документации getLastKnownLocation:

Если поставщик в настоящее время отключен, возвращается ноль.

как вы используете getBestProvider(criteria, false) Вы говорите, что разрешаете провайдерам, которые не включены (вот что false значит) - переключи на true если вы хотите посмотреть только на включенных провайдеров (что гарантирует, что getLastKnownLocation не возвращает ноль).

Обратите внимание, что getLastKnownLocation может быть очень устаревшим, и вы все еще можете искать обновления местоположения, если вам нужно получить недавнее местоположение.

Есть несколько вещей, которые следует иметь в виду, когда дело касается gsp или сетевого расположения.

* - Для получения данных на ваше устройство требуется время: да, для восстановления текущего местоположения устройства может потребоваться даже 1 минута. Вот почему вы должны использовать LocationListener

* -Может звучать безумно, но убедитесь, что ваш смартфон подключен к Интернету

Другие вопросы по тегам