2016-02-18 1 views
0

Я пытаюсь принести места, особенно, когда приложение находится в фоновом режиме, используя
«LocationServices FusedLocationApi requestLocationUpdate - Использование отложенных намерений».Android - Не Получая объект Расположение в IntentService - с помощью LocationServices FusedLocationApi requestLocationUpdates Использование отложенных Intents

Я нахожу класс IntentService в этом ожидающем намерения, и его работа просто прекрасна. Это происходит через каждые регулярные промежутки времени, мое намерение службы вызывается, но вот вопрос: я не получаю объект класса «Местоположение» в полученном намерении.

Я попытался проверить каждый доступный ключ в объекте объекта намерения, также попытался использовать методы hasResult() и extractResult() класса LocationResult, но не повезло. Я не получаю местоположение в намерении, которое я получаю в методе «onHandleIntent()» моего класса обслуживания.

Если у кого-то есть исходный код этого источника, поделитесь им. Спасибо.

+0

вставьте здесь свой фрагмент кода. – Sandeep

ответ

0

Это, как вы запрашиваете расположение от намерения в вашем intentservice -

LocationResult locationResult = LocationResult.extractResult(intent); 
if (locationResult != null) { 
    Location location = locationResult.getLastLocation(); 
} 
0

После проб и ошибок я выяснил, что, по-видимому, когда вы создаете PendingIntent вы НЕ ДОЛЖНЫ добавить сверток Намерению - если вы не получите обновленный Место когда PendingIntent доставляется в ваш onHandleIntent службы:

private synchronized PendingIntent getPendingIntent(@NonNull Context context) { 
    if (locationReceivedIntent == null) { 
     final Intent intent = new Intent(context, LocationService.class); 
     intent.setAction(ACTION_LOCATION_RECEIVED); 
     /* 
     final Bundle bundle = new Bundle(); 
     bundle.putInt(BUNDLE_REQUESTED_ACTION, LOCATION_UPDATED); 
     intent.putExtras(bundle); 
     */ 
     locationReceivedIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    } 
    return locationReceivedIntent; 
} 

Смотрите часть I закомментирована? Если я раскомментирую эту часть, я не получу объект Location в onHandleIntent. Если я закомментировать (как это сделал я), то он работает отлично и вызов:

 final LocationResult newLocations = LocationResult.extractResult(intent); 
     final Location newLocation = newLocations != null ? newLocations.getLastLocation() : null; 

в onHandleIntent Сервиса получает мне фактическое местонахождение (хранится в newLocation). Итак, подведем итог: я не знаю, почему так ведет себя, но мне кажется, что это очень странно, и до сих пор мне не удалось найти документацию о том, что она должна вести себя таким образом ...

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