Android的checkSelfPermission()中的“ this”指的是什么?

时间:2019-01-17 20:55:53

标签: android kotlin this android-context

我想知道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 :(得分:0)

Context是与应用程序环境有关的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及对应用程序级操作(例如启动活动,广播和接收意图等)的调用。

获得context的不同方法

  1. getApplicationContext()
  2. getContext()
  3. getBaseContext()
  4. 此(在活动课程中)

this->指当前活动的上下文。

答案 1 :(得分:0)

  

我想知道此关键字在下面的代码中指的是

在您的代码段中

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-ActivityApplication,也可以传入某种类型的Service(请注意,Application和{{1 }}都从Service扩展而来,根据docs,它有七个直接子类和40多个间接子类,其中一个是ContextWrapper,它们都是{{1}的有效参数}。

答案 2 :(得分:0)

它是指 RequiresLocation 类的当前实例

完全合格的内容会更清晰地显示为: RequiresLocation.this

因此,您注意到 checkSelfPermission 的签名需要 Context ,并且可以传递“ ”(RequiresLocation实例)之类的上下文参数,因为所有活动均源自 Context 。 请注意,由于 RequiresLocation 来自 AppCompatActivity ,因此此类也属于 Context

答案 3 :(得分:0)

上下文是指当前的活动状态。我们使用上下文来获取当前活动状态的信息。 您也可以参考下面的链接,以获取有关上下文的详细信息。 https://blog.mindorks.com/understanding-context-in-android-application-330913e32514