Я понимаю, что вам нужно проверить, разрешил ли пользователь местоположение, прежде чем выполнять методы на fusedLocationProviderClient
.Поэтому я создал глобальный метод, например, так:
fun locationAllowed(context: Context): Int {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
return PackageManager.PERMISSION_GRANTED
}
return PackageManager.PERMISSION_DENIED
}
и использовал его в своей деятельности:
class Home : FragmentActivity() {
lateinit var fusedLocationProviderClient: FusedLocationProviderClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
if (locationAllowed(this) == PackageManager.PERMISSION_GRANTED) {
fusedLocationProviderClient.lastLocation // still gives me the error
}
}
}
, но я все еще получаю красное подчеркивание fusedLocationProviderClient.lastLocation
: Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException.
Есть идеи, почему?