android - FusedLocationProviderClient 不适用于 android 5.1
问题描述
我有一个带有 Google Places API 和 Google Maps API 的应用程序。用户可以稍后在 MapView 上选择地点并打开它。经过一些测试后,我发现 FusedLocationProviderClient 不能按预期在每个设备上工作。它在 Android 8.1(Redmi Note 5)上运行良好,但在 5.1(魅族 m3 note)上运行良好。5.1 中的问题是 LocationCallbackListener 永远不会被调用。这是代码:
override fun onMapReady(googleMap: GoogleMap?) {
mGoogleMap = googleMap
mLocationRequest.interval = 60000
mLocationRequest.fastestInterval = 60000
mLocationRequest.priority = LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(requireActivity())
mLocationCallback = LocationCallbackListener()
val placeLatLng = LatLng(mPlaceLatLng.first, mPlaceLatLng.second)
mGoogleMap?.addMarker(MarkerOptions().position(placeLatLng).title(mPlaceName).snippet(mPlaceAddress))
mGoogleMap?.moveCamera(CameraUpdateFactory.newLatLngZoom(placeLatLng, 15.0f))
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(requireContext(),
Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
//Location Permission already granted
mFusedLocationClient?.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper())
mGoogleMap?.isMyLocationEnabled = true
} else {
PermissionHelper.checkFineLocationPermission(requireActivity())
}
} else {
mFusedLocationClient?.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper())
mGoogleMap?.isMyLocationEnabled = true
}
}
我有一个
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
在我的清单中。
GooglePlaces API 也不显示设备位置。所以,我想我无法在任何 API 中访问位置
解决方案
推荐阅读
- ios - Swift - App Store Connect 版本无法检测 Catalyst 环境
- c# - 爱普生ip打印机打印后插入剪切线
- r - dplyr 总结()
- angular - CurtainsJS GSAP WebGL 列表项鼠标悬停问题
- python - 缺少 1 个必需的位置参数:函数中的“次”
- python - 类型错误:_append_dispatcher()
- ruby-on-rails - 任何避免使用 gsub 的方法!更换
- html - CSS中的文本居中或左边距和右边距不居中按钮
- json - 正则表达式匹配来自 JSON 的键值对
- oracle - Oracle 数据库读取监视器或计数器