Не могу передать переменную в requestPermissions () - PullRequest
0 голосов
/ 19 января 2019

Моя деятельность RequiresLocation - запрашивать разрешение на услуги определения местоположения.

Вот код:

import android.content.pm.PackageManager
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.widget.Button
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_requires_location.*
import java.util.jar.Manifest

class RequiresLocation : AppCompatActivity() {

    val requestCode: Int = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_requires_location)

        turnOnLocationButton.setOnClickListener {
            if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission has already been granted", Toast.LENGTH_SHORT).show()
            }
                else {
                    requestLocationPermission()
                }
            }
        }
    }

    private fun requestLocationPermission(): {
        ActivityCompat.requestPermissions(
            RequiresLocation.class,
                    arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
                    requestCode) // coming up in red
    }

, однако код запроса отображается на Android Studio красным цветом в качестве неразрешенной ссылки.Почему я не могу передать это?- это потому, что это приватная переменная?

Я следую официальному учебнику Android по для requestPermissions()

1 Ответ

0 голосов
/ 19 января 2019

Используйте this@RequiresLocation вместо RequiresLocation.class

Попробуйте это

 ActivityCompat.requestPermissions(
            this@RequiresLocation,
                    arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
                    requestCode)

Или

private fun requestLocationPermission() {
    ActivityCompat.requestPermissions(
            this,
                    arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
            requestCode) // coming up in red
}

ОБНОВЛЕНИЕ

class RequiresLocation : AppCompatActivity() {

    val requestCode: Int = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_requires_location)

        turnOnLocationButton.setOnClickListener {
            if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission has already been granted", Toast.LENGTH_SHORT).show()
            }
            else {
                requestLocationPermission()
            }
        }
    }
    private fun requestLocationPermission() {
        ActivityCompat.requestPermissions(
                this,
                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
                requestCode) // coming up in red
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...