[英]What does "this" refer to in Android checkSelfPermission()?
我想知道下面代码中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){
...
}
}
}
}
我检查了checkSelfPermission()
的 Android 文档,它有这个:
int checkSelfPermission (Context context,
String permission)
这里的上下文具体指的是什么? 是整个应用程序而不是活动吗?
Context
是有关应用程序环境的全局信息的接口。 这是一个抽象类,其实现由Android系统提供。 它允许访问特定于应用程序的资源和类,以及调用应用程序级操作,例如启动活动、广播和接收意图等。
获取context
不同方法
this
-> 指的是当前活动的上下文。
我想知道下面代码中 this 关键字指的是什么
在您的代码片段中
ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED
关键字this
指的是当前的Activity
实例。
对于我们这些习惯于编写 Java 代码的人来说:在这种情况下,Kotlin 与 Java 不同。
在 Java 中,一旦您“进入” View.OnClickListener
的范围,您就必须编写RequiresLocation.this
。
在 Kotlin 中,只需this
做即可。 但是,如果您正在使用 Android Studio 或 IntelliJ Idea 并通过在this之后立即输入@继续键入,那么代码完成将为您提供this@RequiresLocation
,因此您可以确定它确实是正确的this
。
checkSelfPermission()
中的Context
参数指的是什么?
您可以传入任何Context
- 一个Activity
, Application
,还有某种类型的Service
(注意Application
和Service
都从ContextWrapper
扩展,根据文档,它有七个直接子类和 40 多个间接子类,其中一个是Activity
。所有这些都是checkSelfPermission()
有效参数。)
它指的是RequiresLocation类的当前实例。
完全合格的会更清楚地阅读: RequiresLocation.this
因此,正如您注意到的, checkSelfPermission的签名需要一个Context ,并且“ this ”(RequiresLocation 的实例)可以作为这样的上下文参数传递,因为所有活动都从Context派生。 考虑到因为RequiresLocation派生自AppCompatActivity ,所以这样的类也是一个Context 。
上下文是指当前的活动状态。 我们使用上下文来获取当前活动状态的信息。 您还可以参考以下链接以获取有关Context 的详细信息。 https://blog.mindorks.com/understanding-context-in-android-application-330913e32514
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.