[英]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.