Как я могу включить или отключить GPS программно на Android? - PullRequest
145 голосов
/ 18 января 2011

Я знаю, что вопрос о программном включении / выключении GPS на Android уже был обсуждался много раз , и ответ всегда один и тот же:

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

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

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

У кого-нибудь есть идеи или подсказки о том, как Tasker достигает этого?

Ответы [ 14 ]

2 голосов
/ 18 января 2011

Может быть, с трюками отражения вокруг класса android.server.LocationManagerService.

Также есть метод (начиная с API 8) android.provider.Settings.Secure.setLocationProviderEnabled

1 голос
/ 15 января 2016

С момента опубликования этого вопроса все изменилось, теперь с новым API Служб Google вы можете предлагать пользователям включить GPS:

https://developers.google.com/places/android-api/current-place

Вам потребуется запросить разрешение ACCESS_FINE_LOCATION в манифесте:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Также посмотрите это видео:

https://www.youtube.com/watch?v=F0Kh_RnSM0w

0 голосов
/ 08 февраля 2019

Используйте этот код Простой и легкий доступ:

Разрешения:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Следуйте этому коду для программного доступа к GPS:

LocationManager locationManager ;
 boolean GpsStatus ;


            GPSStatus();

            if(GpsStatus == true)
            {
                textview.setText("Your Location Services Is Enabled");
            }else
                {textview.setText("Your Location Services Is Disabled");}

            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);


    public void GPSStatus(){
    locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
    GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} 
0 голосов
/ 05 октября 2018

Вам просто нужно удалить LocationListener из LocationManager

manager.removeUpdates(listener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...