应用切换语言后,Kpermission权限请求仍跟随系统语言的问题求助
解决Kpermission权限请求语言不跟随应用设置的问题
- 问题本质:Kpermission默认采用系统上下文构建权限弹窗,导致弹窗语言跟随系统语言,而非应用自定义的语言配置。
- 修复方案:
- 确认应用已完成多语言切换的基础配置,切换语言时能正确更新上下文的语言参数。
- 初始化Kpermission时,传入已配置应用语言的上下文,而非默认的Application或Activity原始上下文:
// 示例:基于当前上下文创建已设置目标语言的新上下文 val config = context.resources.configuration.apply { setLocale(Locale("zh", "CN")) // 替换为你的应用目标语言 } val customLangContext = context.createConfigurationContext(config) // 使用该上下文初始化Kpermission val permissionManager = KPermissions.with(customLangContext) .permissions(Manifest.permission.CAMERA) .build() - 若在Activity中使用,可重写
attachBaseContext方法,确保Activity上下文始终同步应用语言:override fun attachBaseContext(newBase: Context) { // 这里替换为你的应用语言更新逻辑 val updatedContext = getUpdatedLanguageContext(newBase) super.attachBaseContext(updatedContext) }
- 验证方式:切换应用语言后重新发起权限请求,确认弹窗语言与应用当前语言一致。

内容的提问来源于stack exchange,提问作者the great warrior
相关产品推荐
相关产品推荐

