2016-12-25 5 views
0

У меня проблема с местоположением ... Я использую метод для получения широты и долготы. Но моя переменная Location имеет значение null. Таким образом, мои координаты равны 0,0. Может кто-нибудь мне помочь, PLS? Вот код:Невозможно найти устройство

public Location getLocation() { 

     try { 
      locationManager = (LocationManager) mContext 
        .getSystemService(LOCATION_SERVICE); 

      // getting GPS status 
      checkGPS = locationManager 
        .isProviderEnabled(LocationManager.GPS_PROVIDER); 

      // getting network status 
      checkNetwork = locationManager 
        .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

      if (!checkGPS && !checkNetwork) { 
       Toast.makeText(mContext, R.string.no_service, Toast.LENGTH_SHORT).show(); 
      } else { 
       this.canGetLocation = true; 
       // First get location from Network Provider 
       if (checkNetwork) { 

        try { 
         locationManager.requestLocationUpdates(
           LocationManager.NETWORK_PROVIDER, 
           MIN_TIME_BW_UPDATES, 
           MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
         if (locationManager != null) { 
          loc = locationManager 
            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

         } 

         if (loc != null) { 
          latitude = loc.getLatitude(); 
          longitude = loc.getLongitude(); 
         } 
        } catch (SecurityException e) { 

        } 
       } 
      } 

      // if GPS Enabled get lat/long using GPS Services 
      if (checkGPS) { 
       if (loc == null) { 
        try { 
         locationManager.requestLocationUpdates(
           LocationManager.GPS_PROVIDER, 
           MIN_TIME_BW_UPDATES, 
           MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
         if (locationManager != null) { 
          loc = locationManager 
            .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
          if (loc != null) { 
           latitude = loc.getLatitude(); 
           longitude = loc.getLongitude(); 
          } 
         } 
        } catch (SecurityException e) { 

        } 
       } 
      } 

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

     return loc; 
    } 

LOC является недействительным в любом случае. Когда я собираю приложение, GPS и Wi-Fi включены на моем телефоне.

ответ

0

Учитывая, что вы глотания SecurityExceptions, я предполагаю, что ваше приложение не запрашивал permission к ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATION, необходимой для сети и местоположения GPS, соответственно.

Обычно я рекомендую использовать молчащие исключения для глотания. Эти особые SecurityExceptions вам никогда не понадобилось бы добавлять к ним инструкцию catch (это было вашей подсказкой, что что-то не так), b/c вы должны были позвонить checkSelfPermission(), прежде чем пытаться получить доступ к ресурсу.

 Смежные вопросы

  • Нет связанных вопросов^_^