微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取最近的已知位置ACCESS_COARSE_LOCATION +没有Google服务

如何解决获取最近的已知位置ACCESS_COARSE_LOCATION +没有Google服务

是否有可能获得Google服务之类的最近的已知位置?FusedLocationClient仅在获得ACCESS_COARSE_LOCATION权限的情况下执行此操作,而没有Google服务吗?

我尝试了以下操作:

val pm = context.packageManager
val hasFeatureLocation = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION)
var location: Location? = null
if (hasFeatureLocation) {
    val locationManager = context.getSystemService(LOCATION_SERVICE) as LocationManager
    val features = listof(
        PackageManager.FEATURE_LOCATION_GPS,PackageManager.FEATURE_LOCATION_NETWORK
    )
    for (f in features){
        val hasFeature = pm.hasSystemFeature(f)
        if (hasFeature) {
            //val isEnabled = locationManager.isProviderEnabled(f)
            location = locationManager.getLastKNownLocation(f)
        }
        if (location != null)
            break
    }
}

// this would work but needs google services
// val fusedLocationClient = LocationServices.getFusedLocationProviderClient(context)
// location = fusedLocationClient.lastLocation.await<Location?>()

但这失败,出现java.lang.SecurityException: "android.hardware.location.gps" location provider requires ACCESS_FINE_LOCATION permission.

我想要什么:

  • 我只想使用ACCESS_COARSE_LOCATION(不能使用ACCESS_FINE_LOCATION
  • 我不想使用Google FusedLocationClient,因为我不想仅为此一项任务添加此依赖项
  • 我只需要大约。 GPS位置,正好适合ACCESS_COARSE_LOCATION权限

我只需要大约。向用户显示当地天气的位置。 Google FusedLocationClient可以在有限的ACCESS_COARSE_LOCATION权限下执行此操作,如果没有Google服务,是否可以这样做?有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。