Как отключить AlertDialog при включении локации? - PullRequest
0 голосов
/ 06 июля 2018

Я создаю простое приложение, в котором я показываю несколько маркеров на карте. Я использую следующий код для отображения AlertDialog, если местоположение off:

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
//Set title, message and other stuff.

try {
    if (Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE) == Settings.Secure.LOCATION_MODE_OFF) {
            alertDialog.show(); //Works perfect!
    }
} catch (Settings.SettingNotFoundException e) {e.printStackTrace();}

//Create a listener to check for Location Settings Changes
LocationListener locationListener = new LocationListener() {
    public void onProviderEnabled(String provider) {alertDialog.dismiss();} //Dismiss the AlertDialog
    // The other overloaded methods: onProviderDisabled, onLocationChanged and onStatusChanged
};

Когда я запускаю приложение в первый раз с местоположением, указанным off, появляется AlertDialog. Если я поверну on Место, как на картинке ниже:

enter image description here

Метод onProviderEnabled() не запускается. Если я закрою перезапустить приложение, все работает нормально. И вот как я запрашиваю обновления местоположения.

if (isGooglePlayServicesOk()) {
    String[] permissions = {COARSE_LOCATION, FINE_LOCATION};
    if (COARSE LOCATION PERMISSION GRANTED CONDITION) {
        if (FINE LOCATION PERMISSION GRANTED CONDITION) {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }
}

Пожалуйста, помогите мне удалить AlertDialog с первого запуска приложения. Спасибо !!

1 Ответ

0 голосов
/ 06 июля 2018

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

...