Я знаю , что вопрос о включении / выключении GPS на андроид программно уже были обсуждены много раз , и ответ всегда один и тот же:
«Вы не можете по соображениям безопасности / конфиденциальности, вам нужно перейти на экран настроек местоположения и позволить пользователю включить / отключить его».
Я понимаю , что, тем не менее , я недавно купил Tasker с рынка и, среди многих других вещей , которые вы можете сделать с ним, вы можете установить правила для автоматического включения GPS на входе заранее определенного приложения и отключить его на выходе (см здесь для учебник о том, как это сделать, и он просто работает!) и это приложение не может быть подписано с помощью ключа подписи прошивки, так как оно работает на многих версиях Android и на разных устройствах, и вам даже не нужно рутироваться.
Я хотел бы сделать это в моем приложении. Конечно, я не хочу нарушать конфиденциальность пользователей, поэтому я сначала спросил бы пользователя, хочет ли он включить его автоматически с помощью стандартного флажка «запомнить мое решение» и, если он ответит «да», включите его.
У кого-нибудь есть идеи или подсказки о том, как Tasker достигает этого?
Все эти ответы сейчас не разрешены. Вот правильный:
Для всех тех, кто все еще ищет ответ:
Вот как это делают OLA Cabs и другие подобные приложения.
Добавьте это в свой onCreate
Это внедренные методы:
Вот документация Android для того же.
Это чтобы помочь другим парням, если они все еще борются:
Изменить : Добавление комментария Ирфана Раза для получения дополнительной помощи.
источник
ВКЛЮЧИТЬ GPS:
ОТКЛЮЧИТЬ GPS:
источник
Этот код работает на телефонах с ROOTED, если приложение перемещено
/system/aps
, и они имеют следующие разрешения в манифесте :Код
источник
Вместо того, чтобы использовать намерение Settings.ACTION_LOCATION_SOURCE_SETTINGS, вы можете напрямую отображать всплывающие окна в своем приложении, такие как Google Map и Gps, при нажатии кнопки «ОК», их нет необходимости перенаправлять на настройки, просто вам нужно использовать мой код как
Примечание. Эта строка кода автоматически открывает диалоговое окно, если Местоположение не включено. Эта часть строки также используется в Google Map
источник
Начиная с версии 4.4 Android, вы не можете включать / отключать GPS программно. Если вы попробуете код, предложенный в этом ответе , сработает исключение.
источник
Для программного включения или выключения GPS вам необходим доступ с правами root и установлен BusyBox. Даже с этим задача не тривиальна.
Пример здесь: Google Drive , Github , Sourceforge
Протестировано с Android 2.3.5 и 4.1.2.
источник
Над правильным ответом очень старый, нужно что-то новое, вот ответ
Как и в последнем обновлении, у нас есть поддержка androidx, поэтому сначала включите зависимость в файл уровня приложения build.gradle.
затем добавьте в свой файл манифеста:
не забудьте получить согласие пользователя на эти разрешения, если вы выпускаете
теперь вот код, просто используйте его
если что-то пойдет не так, пожалуйста, пинг меня
источник
Ответ был разработан в другом вопросе, но он был закрыт, и я хотел бы, чтобы сообщество тоже попробовало его.
Смотрите этот комментарий
Это решение требует бы
WRITE_SETTINGS
иWRITE_SECURE_SETTINGS
разрешения.источник
android.permission.WRITE_SECURE_SETTINGS
разрешения в Манифесте.Может быть, с уловками отражения вокруг класса
android.server.LocationManagerService
.Также есть метод (начиная с API 8)
android.provider.Settings.Secure.setLocationProviderEnabled
источник
Settings.Secure
класс кажется многообещающим, однако я получаю исключение безопасности, в котором говорится, что мне нужен android.permission.WRITE_SECURE_SETTINGS, и я продолжаю получать сообщение об ошибке, даже добавляя это разрешение (и WRITE_SETTINGS) в мой манифест. Но, похоже, это хороший способ продолжить поиск. Спасибо :)WRITE_SECURE_SETTINGS
имеет уровень защиты, которыйsystemOrSignature
вам нужен, чтобы сделать это приложение системным приложением, чтобы оно работало, что также упоминается в этом ответе .Это лучшее решение, предоставленное
Google Developers
. Просто вызовите этот метод в onResume onCreate после инициализацииGoogleApiClient
.Примечание : Эта строка кода автоматически открывает диалоговое окно, если
Location
оно не включено. Эта часть строки также используется в Google Mapисточник
run time
разрешение предоставлено.Этот код работает на телефонах с ROOTED:
Для отключения GPS вы можете использовать эту команду вместо
Вы также можете переключать точность сети, используя следующие команды: для включения используйте:
а для выключения вы можете использовать:
источник
С тех пор, как был опубликован этот вопрос, все изменилось, теперь с новым 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
источник
Этот работает для меня.
Это проще, чем ответ Rj0078 в этом вопросе ( https://stackoverflow.com/a/42556648/11211963 ), но этот также работает.
Это показывает диалог как это:
(Написано на Kotlin)
источник
Вам просто нужно удалить
LocationListener
изLocationManager
источник
Используйте этот код просто и легко получить доступ:
Разрешения:
Следуйте этому коду для программного доступа к GPS:
источник