«Требуется разрешение, которое может быть отклонено пользователем» при использовании fusedLocationProviderClient - PullRequest
0 голосов
/ 16 мая 2019

Я понимаю, что вам нужно проверить, разрешил ли пользователь местоположение, прежде чем выполнять методы на 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.

Есть идеи, почему?

...