Что означает «это» в Android checkSelfPermission ()? - PullRequest
0 голосов
/ 17 января 2019

Мне интересно, что означает ключевое слово this в приведенном ниже коде (блок кода предназначен для запроса разрешения на доступ к местоположению пользователя).

class RequiresLocation : AppCompatActivity() {

    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){
                ...
            }
        }
    }
}

Я проверил документы для Android на checkSelfPermission(), и он имеет это:

int checkSelfPermission (Context context, 
                String permission)

На что конкретно здесь ссылается контекст? Это приложение в целом, а не деятельность?

Ответы [ 4 ]

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

Контекст относится к текущему состоянию активности. Мы используем контекст для получения информации о текущем состоянии деятельности. Вы также можете обратиться по ссылке ниже для получения подробной информации о Context . https://blog.mindorks.com/understanding-context-in-android-application-330913e32514

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

Мне интересно, что означает это ключевое слово в приведенном ниже коде

В вашем фрагменте кода

ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED

ключевое слово this относится к текущему экземпляру Activity.

Для тех из нас, кто привык писать код на Java: в этом случае Kotlin отличается от Java.

В Java вам нужно будет написать RequiresLocation.this, как только вы попадете в область действия View.OnClickListener.

В Kotlin просто this подойдет. Но если вы работаете с Android Studio или IntelliJ Idea и продолжаете печатать, введя @ сразу после this , то завершение кода предложит вам this@RequiresLocation, так что вы можете уверен, что это действительно правильный this.

Что означает параметр Context в checkSelfPermission()?

Вы можете передать любой Context - Activity, Application, но также и некоторый тип Service (обратите внимание, что Application и Service оба простираются от ContextWrapper, что в соответствии с docs имеет семь прямых и более 40 косвенных подклассов, один из них Activity. Все они являются допустимыми аргументами checkSelfPermission().)

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

Относится к текущему экземпляру класса requireLocation .

Полностью квалифицированный читается более четко, как: Требуется местоположение. Это

Итак, как вы заметили, для подписи checkSelfPermission требуется Context , и « this » (экземпляр requireLocation) можно передать как такой контекст параметр, потому что все Действия являются производными от Context . Примите во внимание, что, поскольку RequireLocation является производным от AppCompatActivity , такой класс также является Context .

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

Context - Интерфейс для глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается системой Android. Он позволяет получить доступ к ресурсам и классам, относящимся к конкретному приложению, а также к дополнительным вызовам для таких операций на уровне приложения, как запуск, передача и прием и т. Д.

Различные методы, с помощью которых вы можете получить context

  1. getApplicationContext ()
  2. getContext ()
  3. getBaseContext ()
  4. это (когда в классе деятельности)

this -> относится к контексту текущей деятельности.

...