Saya tahu bahwa pertanyaan tentang menyalakan / off GPS programatik pada android telah telah dibahas banyak kali , dan jawabannya selalu sama:
"Anda tidak bisa karena alasan keamanan / privasi, Anda harus meneruskan ke layar preferensi lokasi dan membiarkan pengguna mengaktifkan / menonaktifkannya."
Saya mengerti bahwa, bagaimanapun saya baru saja membeli Tasker dari pasar dan, di antara banyak hal lain yang dapat Anda selesaikan, Anda dapat menetapkan aturan untuk mengaktifkan GPS secara otomatis saat memasuki aplikasi yang telah ditentukan dan menonaktifkannya saat keluar (lihat di sini untuk tutorial tentang cara melakukannya, dan itu hanya berfungsi!) dan aplikasi ini tidak dapat ditandatangani dengan kunci penandatanganan firmware karena berfungsi pada banyak versi android dan perangkat yang berbeda dan Anda bahkan tidak perlu di-root.
Saya ingin melakukan ini di aplikasi saya. Tentu saja, saya tidak ingin meledakkan privasi pengguna, jadi saya pertama-tama akan bertanya kepada pengguna apakah dia ingin mengaktifkannya secara otomatis dengan kotak centang "ingat keputusan saya" yang khas dan jika dia menjawab ya, aktifkan.
Apakah ada yang punya ide atau petunjuk tentang bagaimana Tasker mencapai ini?
Semua jawaban ini tidak diizinkan sekarang. Inilah yang benar:
Untuk semua yang masih mencari Jawaban:
Berikut adalah cara kerja OLA Cabs dan aplikasi sejenis lainnya.
Tambahkan ini di onCreate Anda
Ini adalah metode yang diterapkan:
Berikut adalah Dokumentasi Android untuk hal yang sama.
Ini untuk membantu orang lain jika mereka masih berjuang:
Sunting : Menambahkan komentar Irfan Raza untuk bantuan lebih lanjut.
sumber
AKTIFKAN GPS:
Nonaktifkan GPS:
sumber
Kode ini berfungsi pada ponsel ROOTED jika aplikasi dipindahkan ke
/system/aps
, dan mereka memiliki izin berikut dalam manifes :Kode
sumber
Alih-alih menggunakan Pengaturan niat.ACTION_LOCATION_SOURCE_SETTINGS Anda dapat langsung dapat muncul pop up di aplikasi Anda seperti Google Map & pada Gps di klik tombol ok mereka tidak perlu mengarahkan ulang ke pengaturan hanya Anda perlu menggunakan kode saya sebagai
Catatan: Baris kode ini secara otomatis membuka kotak dialog jika Lokasi tidak aktif. Sepotong garis ini digunakan di Google Map juga
sumber
Sejak Android versi 4.4, Anda tidak dapat mengaktifkan / menonaktifkan gps secara programatik. Jika Anda mencoba kode yang diajukan pada jawaban ini , pengecualian akan dipecat.
sumber
Untuk menghidupkan atau mematikan GPS secara terprogram Anda membutuhkan akses 'root' dan BusyBox diinstal. Bahkan dengan itu, tugasnya tidak sepele.
Contoh ada di sini: Google Drive , Github , Sourceforge
Diuji dengan Android 2.3.5 dan 4.1.2.
sumber
Di atas jawaban yang benar sangat lama itu membutuhkan sesuatu yang baru jadi Inilah jawabannya
Seperti dalam pembaruan terakhir kami memiliki dukungan androidx jadi pertama-tama sertakan ketergantungan dalam file build.gradle tingkat aplikasi Anda
lalu tambahkan file manifes Anda:
jangan lupa untuk mengambil persetujuan pengguna untuk izin ini jika Anda melepaskan
sekarang di sini adalah kode gunakan saja
jika ada masalah, harap ping saya
sumber
Sebuah jawaban dikembangkan di pertanyaan lain, tetapi sudah ditutup, dan saya ingin komunitas mencobanya juga.
Lihat komentar ini
Solusi ini akan membutuhkan
WRITE_SETTINGS
danWRITE_SECURE_SETTINGS
izin.sumber
android.permission.WRITE_SECURE_SETTINGS
izin dalam Manifest.Mungkin dengan trik refleksi di sekitar kelas
android.server.LocationManagerService
.Juga, ada metode (karena API 8)
android.provider.Settings.Secure.setLocationProviderEnabled
sumber
Settings.Secure
Kelas ini tampaknya menjanjikan, namun saya mendapatkan pengecualian keamanan yang mengatakan bahwa saya memerlukan android.permission.WRITE_SECURE_SETTINGS, dan saya terus mendapatkan kesalahan bahkan menambahkan izin ini (dan juga WRITE_SETTINGS) ke manifes saya. Tapi sepertinya ini cara yang baik untuk terus mencari. Terima kasih :)WRITE_SECURE_SETTINGS
memiliki tingkat perlindungan yangsystemOrSignature
Anda perlukan untuk menjadikan aplikasi itu aplikasi sistem agar bisa berfungsi, yang juga disebutkan dalam jawaban ini .Ini adalah solusi terbaik yang disediakan oleh
Google Developers
. Cukup panggil metode ini di onResume onCreate setelah inisialisasiGoogleApiClient
.Catatan: Baris kode ini secara otomatis membuka kotak dialog jika
Location
tidak aktif. Sepotong garis ini digunakan di Google Map jugasumber
run time
izin yang diberikan.Kode ini berfungsi pada ponsel ROOTED:
Untuk mematikan GPS Anda dapat menggunakan perintah ini sebagai gantinya
Anda juga dapat mengubah akurasi jaringan menggunakan perintah berikut: untuk menghidupkan penggunaan:
dan untuk mematikan Anda dapat menggunakan:
sumber
Banyak hal telah berubah sejak pertanyaan ini diposting, sekarang dengan API Layanan Google, Anda dapat meminta pengguna untuk mengaktifkan GPS:
https://developers.google.com/places/android-api/current-place
Anda perlu meminta izin ACCESS_FINE_LOCATION di manifes Anda:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Tonton juga video ini:
https://www.youtube.com/watch?v=F0Kh_RnSM0w
sumber
Yang ini bekerja untuk saya.
Lebih sederhana daripada jawaban Rj0078 dalam pertanyaan ini ( https://stackoverflow.com/a/42556648/11211963 ), tetapi jawaban itu juga berfungsi.
Ini menunjukkan dialog seperti ini:
(Ditulis dalam Kotlin)
sumber
Anda hanya perlu menghapus
LocationListener
dariLocationManager
sumber
Gunakan kode ini Sederhana dan Mudah Diakses:
Izin:
Ikuti Kode ini untuk mengakses GPS secara terprogram:
sumber