我想知道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)
这里的上下文具体指的是什么?整个应用程序不是活动吗?
答案 0 :(得分:0)
Context
是与应用程序环境有关的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及对应用程序级操作(例如启动活动,广播和接收意图等)的调用。
获得context
的不同方法
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
-Activity
,Application
,也可以传入某种类型的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