Saya sedang mengembangkan aplikasi di OS Android. Saya tidak tahu cara memeriksa apakah Layanan Lokasi diaktifkan atau tidak.
Saya membutuhkan metode yang mengembalikan "true" jika mereka diaktifkan dan "false" jika tidak (jadi dalam kasus terakhir saya dapat menampilkan dialog untuk mengaktifkannya).
Jawaban:
Anda dapat menggunakan kode di bawah ini untuk memeriksa apakah penyedia gps dan penyedia jaringan diaktifkan atau tidak.
Dan dalam file manifes, Anda perlu menambahkan izin berikut
sumber
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(atauNETWORK_PROVIDER
) akan memastikan bahwa Anda tidak membuang pengguna ke halaman pengaturan di mana tidak ada opsi jaringan.Settings.ACTION_SECURITY_SETTINGS
harusSettings.ACTION_LOCATION_SOURCE_SETTINGS
Saya menggunakan kode ini untuk memeriksa:
sumber
Seperti sekarang pada tahun 2020
Terbaru, Cara terbaik dan terpendek adalah
sumber
LocationManager.class
digetSystemService
metode karena panggilan membutuhkan API 23 ;-)Anda dapat menggunakan kode ini untuk mengarahkan pengguna ke Pengaturan, tempat mereka dapat mengaktifkan GPS:
sumber
isProviderEnabled()
dangetProviders(true)
metode.isProviderEnabled()
dangetProviders(true)
metode merespons ketika pengaturan seperti itu diaktifkan (atau dinonaktifkan, tergantung pada bagaimana Anda melihatnya), saya akan sangat ingin tahu apa yang Anda temui.Bermigrasi ke Android X dan gunakan
dan gunakan LocationManagerCompat
Di jawa
Di Kotlin
sumber
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
Jadi, jika Anda tidak memiliki izin untuk jaringan atau penyedia gps, itu mungkin melemparkan pengecualian, tergantung yang diaktifkan. Periksa kode sumber untuk info lebih lanjut.Dengan menonaktifkan jawaban di atas, di API 23 Anda perlu menambahkan pemeriksaan izin "berbahaya" serta memeriksa sistemnya sendiri:
sumber
Jika tidak ada penyedia yang diaktifkan, "pasif" adalah penyedia terbaik yang dikembalikan. Lihat https://stackoverflow.com/a/4519414/621690
sumber
Ya, Anda dapat memeriksa di bawah ini kodenya:
dengan izin di file manifes:
sumber
Ini jika klausa dengan mudah memeriksa apakah layanan lokasi tersedia menurut saya:
sumber
Saya menggunakan cara seperti itu untuk NETWORK_PROVIDER tetapi Anda dapat menambahkan dan untuk GPS .
Di onCreate saya masukkan
Dan metode pengecekan
sumber
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Ini adalah metode yang sangat berguna yang mengembalikan "
true
" jikaLocation services
diaktifkan:sumber
Untuk mendapatkan lokasi Geo saat ini di peta google android, Anda harus mengaktifkan opsi lokasi perangkat Anda . Untuk memeriksa apakah lokasi itu aktif atau tidak, Anda dapat memanggil metode ini dari
onCreate()
metode Anda .sumber
Untuk kotlin
dialog
sebut seperti ini
Petunjuk: dialog membutuhkan impor berikut (studio android harus menangani ini untuk Anda)
Dan dalam manifes Anda memerlukan izin berikut
sumber
Anda dapat meminta pembaruan lokasi dan menampilkan dialog bersama, seperti GoogleMaps juga. Ini kodenya:
Jika Anda memerlukan info lebih lanjut, periksa kelas LocationRequest .
sumber
saya menggunakan kode pertama mulai membuat metode isLocationEnabled
dan saya memeriksa Kondisi jika mendatang Buka peta dan salah memberikan niat ACTION_LOCATION_SOURCE_SETTINGS
sumber
Dapat melakukannya dengan cara paling sederhana
sumber
Jika Anda menggunakan AndroidX, gunakan kode di bawah ini untuk memeriksa Layanan Lokasi diaktifkan atau tidak:
sumber
Untuk memeriksa penyedia jaringan, Anda hanya perlu mengubah string yang diteruskan ke isProviderEnabled ke LocationManager.NETWORK_PROVIDER jika Anda memeriksa nilai pengembalian untuk penyedia GPS dan penyedia NETwork - keduanya salah berarti tidak ada layanan lokasi
sumber
sumber
sumber
}
Gunakan metode isLocationEnabled untuk mendeteksi layanan lokasi diaktifkan.
https://github.com/Polidea/RxAndroidBle/issues/327# halaman akan memberikan informasi lebih lanjut mengapa tidak menggunakan penyedia pasif, alih-alih menggunakan mode lokasi.
sumber