app切换语言重启应用生效

切换语言分为两种

1、切换app内部语言,系统语言不变,不需要系统签名app可以实现的功能

LanguageUtils.applyLanguage(Locale.KOREA, false)

这里的LanguageUtils是工具库Utilcode中的工具

2、切换系统语言,需要系统签名,

fun setSystemLanguage(context: Context, languageCode: String) {
        val toLocal = Locale.forLanguageTag(languageCode)
        Timber.i("Language: ${toLocal.language}  toLocal.script: ${toLocal.script}")
        // 设置语言,但国家不能改变
        val newLocale = Locale.Builder()
            .setLocale(toLocal)
            .setLanguage(toLocal.language)
            .setScript(toLocal.script)
            .build()
        LocalePicker.updateLocale(newLocale)
    }

无论哪种修改语言后需要重启应用生效,可以在当前Activity中监听并重启应用生效

override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        Timber.d("语言变化:${Locale.getDefault().language}")
        restartApplication()
    }

    // 在 Activity 类中添加方法
    fun restartApplication() {
        val ctx = applicationContext
        val packageManager = ctx.packageManager
        val intent = packageManager.getLaunchIntentForPackage(ctx.packageName)
        val mainIntent = Intent.makeRestartActivityTask(intent?.component)
        ctx.startActivity(mainIntent)
        Runtime.getRuntime().exit(0)
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值