Android Gmaps предлагает пользователю включить GPS при нажатии кнопки MyLocationButton

Проблема: MyLocationButton включен на Google Maps, а GPS выключен. Когда пользователь нажимает на него, он просто молча терпит неудачу. Это довольно плохое взаимодействие с пользователем. Я хотел бы, чтобы он предлагал пользователю изменить настройки GPS (как это происходит на картах Google).

Кажется, я могу переопределить обработчик кнопки, но мне нравится ожидание местоположения пользователя и центрирование части карты (и я бы с удовольствием не переписывал ее). Есть ли способ поймать событие отказа кнопки?

Спасибо.


person ClonedOne    schedule 05.02.2017    source источник
comment
См. этот вопрос   -  person Nicolas    schedule 06.02.2017
comment
@NicolasMaltais Спасибо. Однако суть вопроса не в этом. Я знаю, как запросить пользователя для gps. Я хотел бы поймать отказ MyLocationButton отправить этот запрос.   -  person ClonedOne    schedule 06.02.2017
comment
После этого будет проверяться, включен ли gps с помощью этот метод работает?   -  person Nicolas    schedule 06.02.2017


Ответы (1)


Я думаю, что это решит проблему, проверив, включен ли GPS, и предупредив пользователя, если он отключен. я скопировал код из эта ссылка.

final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );

    if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
        buildAlertMessageNoGps();
    }

private void buildAlertMessageNoGps() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                   startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                    dialog.cancel();
               }
           });
    final AlertDialog alert = builder.create();
    alert.show();
}
person Mehran Zamani    schedule 05.02.2017
comment
Спасибо, но моя проблема не в том, как проверить, активен ли GPS, а в том, как это сделать в ответ на сбой MyLocationButton. Насколько я понимаю, этот код этого не делает, вместо этого он просто проверяет доступность GPS, как только он вызывается в жизненном цикле активности. Пожалуйста, поправьте меня, если я ошибаюсь - person ClonedOne; 06.02.2017
comment
когда MyLocationButton терпит неудачу? когда GPS был отключен. - person Mehran Zamani; 06.02.2017