使用权限时,Compose Preview 在 Android Studio 中不起作用 (appcompanist)

Tal*_*bar 6 android kotlin android-jetpack-compose

当我在可组合项中添加这一行时,预览会出现异常。

代码: val locationPermissionsState = rememberMultiplePermissionsState( listOf( Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION ) )

异常消息为“此预览无法找到 CompositionLocal,堆栈跟踪为

java.lang.IllegalStateException:应在 com.google.accompanist.permissions.PermissionsUtilKt.findActivity(PermissionsUtil.kt:138) 处的活动上下文中调用权限 com.google.accompanist.permissions.MutableMultiplePermissionsStateKt.rememberMutablePermissionsState(MutableMultiplePermissionsState. kt:80)在com.google.accompanist.permissions.MutableMultiplePermissionsStateKt.rememberMutableMultiplePermissionsState(MutableMultiplePermissionsState.kt:48)在com.google.accompanist.permissions.MultiplePermissionsStateKt.rememberMultiplePermissionsState(MultiplePermissionsState.kt:38)

Rya*_*ral 2

我能够在 Android Studio (Electric Eel) 中预览可组合函数,这些MultiplePermissionsState函数通过实现接口并硬编码预览所需的状态来使用该接口。

这是一个例子:

@ExperimentalPermissionsApi
class MultiplePermissionsStatePreview : MultiplePermissionsState {

    override val allPermissionsGranted: Boolean
        get() = false

    override val permissions: List<PermissionState>
        get() = emptyList()

    override val revokedPermissions: List<PermissionState>
        get() = emptyList()

    override val shouldShowRationale: Boolean
        get() = true

    override fun launchMultiplePermissionRequest() {
        // do nothing
    }
}

@ExperimentalPermissionsApi
@Preview
@Composable
private fun PermissionsPreview() {
    AppTheme {
        PermissionsScreen(
            multiplePermissionsState = MultiplePermissionsStatePreview()
            // ...
        )
    }
}
Run Code Online (Sandbox Code Playgroud)