我有一個已經運行了幾年的應用程式,但最近,我一直收到關于位置系統無法正常運行的報告。
我將問題歸結為 LocationCallback.onLocationAvailability(availability: LocationAvailability?)。它總是以 availability.isLocationAvailable = false
描述表明,它是假的,意味著我不能指望從另一個函式LocationCallback.onLocationResult(locationResult: LocationResult?)中獲得任何位置,但結果很好,而且位置似乎足夠正確。
誰能告訴我,我是否可以簡單地忽略isLocationAvailable = false,而只是按原樣使用位置結果,而無需承擔任何獲得錯誤讀數或低精度或類似的風險?
我已經嘗試了LocationRequest的不同設定,并且沒有任何問題 - 除了可用性仍然被呼叫為false。結果本身是好的。
權限是公平公正的,我也嘗試過只使用ACCESS_FINE_LOCATION,只使用ACCESS_COARSE_LOCATION,以及同時開啟。
這些設備上的位置都是啟用的。
是否有什么地方改變了?
在過去的幾周里,FusedLocation系統的內部運作是否發生了一些變化?它已經完美地作業了好幾年了?
代碼:
var locationRequest: LocationRequest = LocationRequest.create().apply {
interval = 10000 5000
在初始化和啟動位置更新時,我使用了以下片段:
在初始化和啟動位置更新時,我使用了以下片段。
val locationClient = LocationServices.getFusedLocationProviderClient(this)
val builder = LocationSettingsRequest.Builder().addLocationRequest(locationRequest)。
val client: SettingsClient = LocationServices.getSettingsClient(this)
val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
task.addOnSuccessListener { locationSettingsResponse ->
locationClient?.requestLocationUpdates(locationRequest, locationCallback, null)
}
而用這個LocationCallback:
val locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult? ){
locationResult ?: return
if (locationResult.lots.isNotEmpty()) {
val location = locationResult.location[0]
}
}
override fun onLocationAvailability(availability: LocationAvailability? ){
availability?.isLocationAvailable <-- 這個is總是false!
}
}
uj5u.com熱心網友回復:
這個問題是由新的Google Play服務更新(版本21.30.16)引起的。
參見。https://issuetracker.google.com/issues/198176818
按照2021年9月9日的說法,他們說:
我們已經暫時回滾了一些關于 isLocationAvailable()的一些邏輯,你應該注意到在接下來的24小時左右,行為會恢復正常。 在接下來的 24 小時左右。
uj5u.com熱心網友回復:
你的問題可能是由于更新了GooglePlay關于用戶位置的政策。幾年前生效的GDPR(通用資料保護條例)規定,用戶的位置是個人可識別資訊,所以現在需要用戶的同意才能使用這些資料。
這只是意味著在清單權限中添加 ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION 是不夠的。您將需要在運行時向用戶請求權限。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311663.html
標籤:
下一篇:無法顯示DrawingManager("你在URL中是否包含proplibraries={[drawing']}?未定義")。
