Melawan pendekatan tradisional yang meminta pengguna untuk pergi ke halaman pengaturan dan mengaktifkan layanan lokasi dan kembali lagi, saya telah memperhatikan cara yang lebih sederhana untuk melakukan hal yang sama di beberapa aplikasi terbaru.
Mengacu pada tangkapan layar di bawah ini, ini meminta dialog kepada pengguna untuk mengaktifkan layanan lokasi hanya dengan satu klik dan berfungsi di aplikasi tersebut.
Bagaimana saya bisa mencapai hal yang sama?
Jawaban:
Dialog ini dibuat oleh LocationSettingsRequest.Builder yang tersedia di Layanan Google Play.
Anda perlu menambahkan ketergantungan ke aplikasi Anda
build.gradle
:Kemudian Anda dapat menggunakan contoh minimal ini:
Anda dapat menemukan contoh lengkapnya di sini .
sumber
You need to add a dependency to your app build.gradle: compile 'com.google.android.gms:play-services:8.1.0'
app
Ikuti langkah-langkah yang disebutkan di bawah ini
1) Buat
LocationRequest
sesuai keinginan Anda2) Buat a
LocationSettingsRequest.Builder
3) Dapatkan
LocationSettingsResponse
Task
menggunakan kode berikutCatatan:
LocationServices.SettingsApi
tidak digunakan lagi, jadi gunakan sebagaiSettingsClient
gantinya.4) Tambahkan a
OnCompleteListener
untuk mendapatkan hasil dari Tugas. SetelahTask
selesai, klien dapat memeriksa pengaturan lokasi dengan melihat kode status dariLocationSettingsResponse
objek.KASUS 1::
LocationSettingsStatusCodes.RESOLUTION_REQUIRED
Lokasi tidak diaktifkan tetapi, kita dapat meminta pengguna untuk mengaktifkan lokasi dengan meminta dia untuk mengaktifkan lokasi dengan dialog (dengan memanggilstartResolutionForResult
).KASUS 2::
LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE
Pengaturan lokasi tidak dipenuhi. Namun, kami tidak memiliki cara untuk memperbaiki pengaturan tersebut sehingga kami tidak akan menampilkan dialog.5)
OnActivityResult
kita bisa mendapatkan tindakan pengguna di dialog pengaturan lokasi.RESULT_OK
=> Pengguna menyalakan Lokasi.RESULT_CANCELLED
- Pengguna menolak permintaan pengaturan lokasi.sumber
Ini Bekerja Mirip dengan peta google
Tambahkan Dependensi di file build.gradle
ini atau itu
sumber
Deklarasi Variabel
Buka Dialog Menggunakan Kode Di Bawah Ini
onActivityResult
sumber
rae.startResolutionForResult(activity, REQUEST_CHECK_SETTINGS)
panggilanstartIntentSenderForResult(rae.getResolution().getIntentSender(), REQUEST_CHECK_SETTINGS, null, 0, 0, 0, null)
, jikaonActivityResult()
tidak, tidak akan dipanggil.startIntentSenderForResult
metode iniopenGpsEnableSetting()
?openGpsEnableSetting()
cukup memulai dialog untuk mengaktifkan pengaturan GPS. Setelah selesai,onActivityResult()
dipanggil denganrequestCode == REQUEST_ENABLE_GPS
.onActivityResult()
dipanggil dari Aktivitas dan saya bertanya-tanya apakah mungkin mengembalikan hasilnya keFragment
sejenisstartIntentSenderForResult
.Terima kasih kepada Mattia Maestrini +1
Solusi Xamarin:
CATATAN:
Ini tidak akan berfungsi dengan Huawei atau perangkat lain yang tidak memasang layanan Google.
sumber
using android.Gms.Common.Apis; using Android.Gms.Location;
? Setelah menelepon,LocationServices.SettingsApi.CheckLocationSettings
apakah Anda mendapat panggilan balikresult.SetResultCallback(
? Tempatkan titik istirahat di masing-masing dan periksa apa yang dilakukan kodeAndroid Marshmallow 6 mendukung izin waktu proses. Izin waktu proses hanya berfungsi di Marshmallow dan di pra-Marshmallow masih berfungsi dengan cara lama.
Anda dapat mempelajari lebih lanjut tentang itu di Video resmi Pengembang Android ini:
https://www.youtube.com/watch?v=C8lUdPVSzDk
Dan meminta izin: http://developer.android.com/training/permissions/requesting.html
sumber
Terima kasih Mattia Maestrini atas Jawabannya, saya ingin menambahkannya menggunakan
compile 'com.google.android.gms:play-services-location:8.1.0'
sudah cukup. Ini mencegah aplikasi Anda memasukkan pustaka yang tidak perlu dan membantu menjaga metode Anda tetap dihitung.
sumber
Solusi Kotlin
Menambahkan
build.gradle(Module:app)
setelah itu buat fungsi ini
sumber
Dengan pembaruan Marshmallow baru-baru ini, meskipun setelan Lokasi diaktifkan, aplikasi Anda perlu meminta izin secara eksplisit. Cara yang disarankan untuk melakukan ini adalah dengan menunjukkan bagian Izin aplikasi Anda di mana pengguna dapat mengalihkan izin sesuai kebutuhan. Potongan kode untuk melakukan ini adalah sebagai berikut:
Dan ganti
onRequestPermissionsResult
metode seperti di bawah ini:Pendekatan lainnya adalah Anda juga dapat menggunakan SettingsApi untuk menanyakan penyedia lokasi mana yang diaktifkan. Jika tidak ada yang diaktifkan, Anda dapat meminta dialog untuk mengubah pengaturan dari dalam aplikasi.
sumber
Cara paling sederhana yang saya temukan saat penelitian saya, adalah membuat kelas Util untuk proses permintaan lokasi ini dan kemudian memanggilnya untuk mengaktifkan gps untuk kami.
Silakan periksa blog ini! Itu menceritakan keseluruhan cerita.
sumber