Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Диалог с предложением включить GPS

#android #gps


Когда заходишь в Google Maps и у тебя выключен GPS, Андроид тебе предложит включить
его диалогом с двумя кнопками. При нажатии на ОК - GPS включится.

Как сделать такой же диалог в своем приложении ?

И да, я правильно понимаю, что программно я никак не могу включить GPS без спрашивания
пользователя ?
    


Ответы

Ответ 1



Опросите систему включен ли GPS. public boolean isGeoDisabled() { LocationManager mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); boolean mIsGPSEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean mIsNetworkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); boolean mIsGeoDisabled = !mIsGPSEnabled && !mIsNetworkEnabled; return mIsGeoDisabled; } если нет, покажите диалог с предложением включить, при согласии отправьте пользователя в настройки startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));

Ответ 2



Программно включить без согласия пользователя вы не сможете. Диалог можно реализовать например вот так: private LocationManager locationManager; public static boolean geolocationEnabled = false; /** * Проверяет включены ли соответствующие провайдеры локации */ private boolean checkLocationServiceEnabled() { locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); try { geolocationEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } catch (Exception ex) { } return buildAlertMessageNoLocationService(geolocationEnabled); } /** * Показываем диалог и переводим пользователя к настройкам геолокации */ private boolean buildAlertMessageNoLocationService(boolean network_enabled) { String msg = !network_enabled ? getResources().getString(R.string.msg_switch_network) : null; if (msg != null) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setCancelable(false) .setMessage(msg) .setPositiveButton("Включить", 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)); } }); final AlertDialog alert = builder.create(); alert.show(); return true; } return false; } Затем использовать как проверку в OnResume у активити: checkLocationServiceEnabled();

Комментариев нет:

Отправить комментарий