Как включить и выключить GPS нажатием кнопки?

Я собираюсь сделать вспомогательное прикосновение для приложения Android, такого как приложение ios, поэтому я хочу добавить функцию включения GPS для этого. Я хочу включать и выключать GPS, щелкнув изображение, когда я нажимаю на него. Он переходит в настройки, и оттуда вы можете включать и выключать местоположение вашего телефона, но я хочу, чтобы это не устанавливалось, когда я щелкните местоположение включено и щелкните другое, чтобы отключить местоположение.

final ImageView locationOn = view.findViewById(R.id.location);
final ImageView locationOff = view.findViewById(R.id.locationOff); 

locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
        GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        if (GpsStatus) {
            locationOn.setVisibility(View.INVISIBLE);
            locationOff.setVisibility(View.VISIBLE);
        }
        else{
            locationOn.setVisibility(View.VISIBLE);
            locationOff.setVisibility(View.INVISIBLE);
        }
        locationOn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                locationOn.setVisibility(View.INVISIBLE);
                locationOff.setVisibility(View.VISIBLE);
            }
        });
        locationOff.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                locationOn.setVisibility(View.VISIBLE);
                locationOff.setVisibility(View.INVISIBLE);
            }
        });

когда я нажимаю на него. Он переходит в настройки, и оттуда вы можете включать и выключать местоположение своего телефона, но я хочу, чтобы это не происходило в настройках, когда я нажимаю местоположение, и нажимаю другое, чтобы отключить местоположение.

Сторонние приложения не могут включать или отключать геолокацию. Единственное, что вы можете сделать, это показать системный диалог, чтобы включить / отключить его.

Vladyslav Matviienko 12.07.2019 09:05

Это невозможно, потому что разрешение на это позволит приложению включить его без уведомления пользователя и создать огромную уязвимость для конфиденциальности пользователя.

Gabe Sechan 12.07.2019 09:07
1
2
373
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, это не невозможно и неуместно. Вы не можете просто управлять телефоном пользователя без его полномочий.

Из игрового магазина:

«Cerberus автоматически включает GPS, если он выключен, когда вы пытаетесь локализовать свое устройство (только на Android < 2.3.3), и вы можете защитить его от несанкционированного удаления — больше информации в конфигурации приложения».

Вы можете сделать что-то вроде этого:

startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));

Используя намерения, если версия API не является последней

Включить GPS

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
sendBroadcast(intent);

Отключить GPS

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
    intent.putExtra("enabled", false);
    sendBroadcast(intent);

это не сработает. Вы получите сообщение об ошибке «java.lang.SecurityException: Permission Denial: не разрешено отправлять широковещательную рассылку android.location.GPS_ENABLED_CHANGE» при попытке отправить широковещательную рассылку. в устройстве Oreo, которое я тестировал.

KuLdip PaTel 12.07.2019 10:31

Другие вопросы по теме