Проверьте, включен ли GPS после запроса

Обычный и простой. Я запускаю Activity и проверяю, включен ли модуль GPS или нет. Если он не включен, я предлагаю пользователю диалог и спросить, хочет ли он его вручную включить. Вкл. Да, я активирую настройки для местоположения. Теперь пользователь может включить его, если захочет, но мне нужно проверить, что он сделал.

try {
    isGPSEnabled = locationManager
            .isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {}
if (isGPSEnabled) {
    locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);
} else {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(
            "Your GPS module is disabled. Would you like to enable it ?")
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int id) {
                            // Sent user to GPS settings screen
                            final ComponentName toLaunch = new ComponentName(
                                    "com.android.settings",
                                    "com.android.settings.SecuritySettings");
                            final Intent intent = new Intent(
                                    Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                            intent.addCategory(Intent.CATEGORY_LAUNCHER);
                            intent.setComponent(toLaunch);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivityForResult(intent, 1);
                            dialog.dismiss();
                        }
                    })
            .setNegativeButton("No",
                    new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog,
                                int id) {
                            dialog.cancel();
                        }
                    });
    AlertDialog alert = builder.create();
    alert.show();
}

Мне нужно знать, что пользователь выбрал в настройках местоположения, когда он возвращается, чтобы продолжить мою логику в коде. В основном мне нужно дождаться, когда пользователь сделает выбор и вернется к моей активности, а также снова проверит состояние gps-модуля.

Ответ 1

Почему бы просто не проверить LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) в методе onActivityResult()? Когда пользователь возвращается, этот метод следует вызывать, потому что вы вызвали startActivityForResult(). Если пользователь включил GPS, то isProviderEnabled() теперь должен возвращать другой результат.

Кроме того, всегда проверяйте GPS в методе onResume. Если пользователь вернется из настроек местоположения и не включил GPS, они просто получат ту же самую подсказку, пока не будет включен GPS.

Или я что-то не хватает?