50 lines
1.2 KiB
Kotlin
50 lines
1.2 KiB
Kotlin
package com.sw.inbound.utils
|
|
|
|
import android.content.Context
|
|
import android.view.View
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.platform.LocalView
|
|
|
|
/**
|
|
* Context 工具类
|
|
*/
|
|
object ContextUtils {
|
|
|
|
// ========== Composable 内获取 ==========
|
|
|
|
/**
|
|
* 获取当前 Composable 的 Activity Context
|
|
* 只能在 @Composable 函数中调用
|
|
*/
|
|
@Composable
|
|
fun getActivityContext(): Context {
|
|
return LocalContext.current
|
|
}
|
|
|
|
/**
|
|
* 获取当前 Composable 的 View
|
|
*/
|
|
@Composable
|
|
fun getLocalView(): View {
|
|
return LocalView.current
|
|
}
|
|
|
|
// ========== 非 Composable 环境获取 ==========
|
|
|
|
/**
|
|
* 通过静态 Application 引用获取
|
|
* 需要在 Application 类中初始化
|
|
*/
|
|
private var _applicationContext: Context? = null
|
|
|
|
fun initAppContext(context: Context) {
|
|
_applicationContext = context.applicationContext
|
|
}
|
|
|
|
fun getAppContext(): Context {
|
|
return _applicationContext ?: throw IllegalStateException(
|
|
"Application context not initialized. Call initAppContext() first."
|
|
)
|
|
}
|
|
} |