【发布时间】:2021-03-31 17:38:04
【问题描述】:
我的代码在 Android Studio 中收到以下 IDE 警告:
调用需要可能被用户拒绝的权限:代码应显式检查权限是否可用(使用 checkPermission)或显式处理潜在的 SecurityException
我的代码如下所示。它应该设置一个GoogleMap 对象以正常显示带有用户位置的框架,如果他们禁用了位置(location == null)或拒绝应用程序的位置权限(addOnFailureListener),则显示整个德国的框架。
fusedLocationClient.lastLocation.addOnFailureListener(this) {
Log.e("onRequestPermissions", "fail")
mMap?.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(51.17, 10.45), 6F)) // Germany
}
fusedLocationClient.lastLocation.addOnSuccessListener(this) { location ->
Log.e("onRequestPermissions", "succ")
if (location == null)
mMap?.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(51.17, 10.45), 6F)) // Germany
else
mMap?.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location.latitude, location.longitude), 13F))
}
我不明白为什么打电话给fusedLocationClient (getFusedLocationClient) 会给我这个错误信息。我以为FusedLocationProviderClient 总是在那里,我正在处理用户拒绝位置权限在addOnFailureListener 内部 的情况。那么,如果我什至不允许调用getFusedLocationClient,我怎么可能附加这个失败回调。
Android Studio 用严重的“错误”和全红色文本处理此警告,这使我的代码看起来很糟糕。
【问题讨论】:
标签: android android-studio kotlin lint