LocationSettingsRequest.Builder memiliki metode setAlwaysShow(boolean show)
. Sementara dokumen menunjukkan saat ini tidak melakukan apa-apa (diperbarui 2015-07-05: dokumentasi Google yang diperbarui telah menghapus kata-kata ini), pengaturan builder.setAlwaysShow(true);
akan memungkinkan perilaku Google Maps:
Berikut kode yang membuatnya berfungsi:
if (googleApiClient == null) {
googleApiClient = new GoogleApiClient.Builder(getActivity())
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
googleApiClient.connect();
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(30 * 1000);
locationRequest.setFastestInterval(5 * 1000);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest);
//**************************
builder.setAlwaysShow(true); //this is the key ingredient
//**************************
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build());
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult result) {
final Status status = result.getStatus();
final LocationSettingsStates state = result.getLocationSettingsStates();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// All location settings are satisfied. The client can initialize location
// requests here.
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Location settings are not satisfied. But could be fixed by showing the user
// a dialog.
try {
// Show the dialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
status.startResolutionForResult(
getActivity(), 1000);
} catch (IntentSender.SendIntentException e) {
// Ignore the error.
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// Location settings are not satisfied. However, we have no way to fix the
// settings so we won't show the dialog.
break;
}
}
});
}
Dari Dokumentasi Android
Untuk Kotlin lihat di sini: https://stackoverflow.com/a/61868985/12478830
RESOLUTION_REQUIRED
. Kemudian, setelah saya menerima dan mengaktifkan lokasi, itu hitsSUCCESS
, dan sepenuhnya melompatonActivityResult()
. MenekanNo
atau kembali membuat dialog menghilang sebentar, lalu muat ulang dan tekanRESOLUTION_REQUIRED
lagi. Satu-satunya cara untuk menyingkirkan dialog adalah dengan menerima, atau menutup dan membuka kembali aplikasi.launchMode
TIDAK dapat diatur kesingleInstance
sebaliknya ini TIDAK akan bekerja. Dialog tidak akan pernah muncul danonActivityResult
akan dipanggil secara otomatis. JANGAN PUNYAandroid:launchMode="singleInstance"
aktivitas Anda diAndroidManifest
. Saya belajar cara yang sangat sulit ini setelah 3 jamSaya ingin menambahkan beberapa perubahan pada jawaban kai bagi mereka yang mencari penanganan tombol Ya / Tidak.
Nyatakan konstanta ini dalam aktivitas Anda
panggil
settingsrequest()
di onStart Anda ()sumber
LocationServices.SettingsApi sudah ditinggalkan sekarang, Jadi Kami menggunakan SettingsClient
Kemudian periksa apakah pengaturan lokasi saat ini puas. Buat tugas LocationSettingsResponse:
Kemudian tambahkan Listener
Ditambahkan padaActivityResult
Lihat tautan SettingsClient
sumber
implementation 'com.google.android.gms:play-services-location:16.0.0'
.Kerjanya mirip dengan google maps?
Kode Sumber: https://drive.google.com/open?id=0BzBKpZ4nzNzUOXM2eEhHM3hOZk0
Tambahkan Ketergantungan dalam file build.gradle:
ATAU
sumber
Ola Cabs menggunakan Pengaturan API yang baru dirilis untuk mencapai fungsi ini. Sesuai API baru, pengguna tidak perlu menavigasi ke halaman pengaturan untuk mengaktifkan layanan lokasi yang memberikan integrasi tanpa batas untuk hal yang sama. Silakan baca di bawah untuk detail lebih lanjut:
https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi
sumber
SettingsAPI
telah ditinggalkan, sekarang Anda menggunakanSettingsClient
developers.google.com/android/reference/com/google/android/gms/…Ketergantungan
Kode
sumber
Anda juga dapat menambahkan beberapa LocationRequests for Builder untuk mencapai dialog "Gunakan GPS, Wi-Fi, dan seluler untuk lokasi" alih-alih hanya "Gunakan GPS untuk lokasi"
sumber
Di Kotlin, gunakan kode ini:
sumber
Silakan periksa solusi saya yang sangat sederhana untuk mendapatkan lokasi pengguna di latar depan.
https://github.com/Maqsood007/UserLocation-Android/blob/master/app/src/main/java/jetpack/skill/userlocation_android/utils/LocationUtility.kt
sumber