Android - java.lang.NullPointerException - Карты Google

Я пытаюсь отобразить широту пользователя, но получаю сообщение об ошибке

java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference.

GPS хорошо активирован и является «лучшим поставщиком».

public void getUserPosition()
{
    /**************Vérification des droits localisation******************/
    Context mainContext = getActivity().getApplicationContext();

    int permissionCheck = ContextCompat.checkSelfPermission(mainContext,
            Manifest.permission.ACCESS_FINE_LOCATION);

    Log.e("Droits Position : ", String.valueOf(permissionCheck));

    if (ContextCompat.checkSelfPermission(mainContext,
            Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED)
    {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this.getActivity(),
                Manifest.permission.ACCESS_FINE_LOCATION))
        {
            Log.e("LOCATION : ", "Localisation acceptée !");
        }
        else
        {
            Log.e("LOCATION : ", "Localisation refusée !");

            ActivityCompat.requestPermissions(this.getActivity(),
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    REQUEST_LOCATION);
        }
    }

    permissionCheck = ContextCompat.checkSelfPermission(mainContext,
            Manifest.permission.WRITE_CALENDAR);
    Log.e("DROITS :", String.valueOf(permissionCheck));
    /*****************FIN vérification droits localisation************/

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

    //On ajoute des critère pour trouver le meilleur provider (indicateur de position)
    Criteria critere = new Criteria();
    critere.setAccuracy(Criteria.ACCURACY_FINE);//On demande une position précise
    critere.setAltitudeRequired(false);         // Est-ce que le fournisseur doit être capable de donner une altitude ?
    critere.setBearingRequired(false);           // Est-ce que le fournisseur doit être capable de donner une direction ?
    critere.setCostAllowed(true);              // Est-ce que le fournisseur peut être payant ?
    critere.setPowerRequirement(Criteria.POWER_HIGH); //On accepte d'utiliser un provider a haute consommation électrique(GPS)
    critere.setSpeedRequired(false); // Est-ce que le fournisseur doit être capable de donner une vitesse ?


    List<String> providers = locationManager.getAllProviders(); //Liste des fournisseurs qui correspondent
    String bestProvider = locationManager.getBestProvider(critere, true); //Le provider qui répond le mieux aux critères

    if (bestProvider == null) //On affiche le nom du provider choisis
    {
        Log.e("Best Provider : ","NULL !");
    }
    else{
        Log.e("Best Provider : ", bestProvider);
    }

    Location positionNow = locationManager.getLastKnownLocation(bestProvider); //Objet location qui contient la position de l'utilisateur
    Log.e("Position user now", "Lat:"+String.valueOf(positionNow.getLatitude()));

}

Location - это null. См. stackoverflow.com/questions/9873190/…
ADM 20.03.2018 15:32

Пожалуйста, отладьте свой код!

Sam 20.03.2018 15:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
109
1

Ответы 1

Вы используете getLastKnownLocation(), который может возвращать null .. обратитесь к этому отвечать, чтобы лучше обрабатывать последнее известное местоположение

Вы также можете обратиться к Документация по Location API, чтобы использовать getLastLocation, который, соответственно, может редко возвращать также null, если местоположение не найдено.

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