android - 如何在撰写中获得 Activity

标签 android android-jetpack-compose

有没有办法在撰写功能中获取当前 Activity ?

@Composable
fun CameraPreviewScreen() {
    val context = ContextAmbient.current
    if (ActivityCompat.checkSelfPermission(
            context,
            Manifest.permission.CAMERA
        ) != PackageManager.PERMISSION_GRANTED
    ) {
        ActivityCompat.requestPermissions(
            this, MainActivity.REQUIRED_PERMISSIONS, MainActivity.REQUEST_CODE_PERMISSIONS  // get activity for `this`
        )
        return
    }
}

最佳答案

虽然之前的答案(即 ContextWrapper -aware)确实是正确的答案,
我想为复制粘贴提供更惯用的实现。

fun Context.getActivity(): AppCompatActivity? = when (this) {
    is AppCompatActivity -> this
    is ContextWrapper -> baseContext.getActivity()
    else -> null
}
ContextWrapper s 不可能相互包裹很多次,递归在这里很好。

关于android - 如何在撰写中获得 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64675386/

相关文章:

android - 在 Jetpack Compose 上滚动时折叠导航底部栏

Android Azure 通信聊天 UI 库导入?

android - 在类之间传递上下文引用的正确方法是什么?

android - 25.1.0 Android 支持库正在破坏工厂行为

android - 获取当前位置按钮未显示在 Jetpack Compose 谷歌地图上

kotlin - Jetpack Compose 图像向量 : how do I able to use the Social vector from google fonts

android - 如何使用 jetpack compose 以编程方式在按钮单击时打开外部 url?

android - 如何使用可组合物在应用程序中动态切换明暗主题

android - 如果未在 firebase 中链接,则停止使用电话号码登录

android - 如何在 Android 中保存 RecyclerView 的滚动位置?