You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kotlin代码修改手机系统语言?

如何使用Kotlin修改手机系统语言?

我想要修改的内容示例

首先明确:普通第三方应用无法直接修改手机系统级语言——Android系统为了安全性和稳定性,限制了非系统应用对系统核心设置(包括系统语言)的修改权限。

如果你的应用属于以下两种情况,才可以实现系统语言修改:

1. 系统应用/拥有系统签名的应用

这类应用拥有更高的系统权限,可以通过调用系统API修改系统语言设置,示例代码如下:

import android.content.ContentResolver
import android.content.Context
import android.provider.Settings
import android.os.LocaleList
import java.util.Locale

fun setSystemLanguage(context: Context, languageCode: String) {
    val locale = Locale(languageCode)
    // 构建新的Locale列表
    val localeList = LocaleList(locale)
    LocaleList.setDefault(localeList)
    
    // 更新系统配置
    val config = context.resources.configuration
    config.setLocales(localeList)
    context.resources.updateConfiguration(config, context.resources.displayMetrics)
    
    // 持久化系统语言设置(需要系统权限)
    Settings.System.putString(context.contentResolver, Settings.System.LOCALE, languageCode)
}

注意:该代码需要应用拥有android.permission.WRITE_SETTINGS权限,并且必须是系统签名应用才能生效,否则会抛出权限异常。

2. 拥有ROOT权限的应用

如果设备已ROOT,你可以通过执行shell命令修改系统语言配置,示例代码如下:

import java.io.DataOutputStream

fun setSystemLanguageWithRoot(languageCode: String) {
    try {
        // 执行su获取ROOT权限
        val process = Runtime.getRuntime().exec("su")
        val outputStream = DataOutputStream(process.outputStream)
        
        // 写入修改语言的命令(以设置英文为例,languageCode为"en")
        outputStream.writeBytes("setprop persist.sys.locale $languageCode\n")
        outputStream.writeBytes("setprop persist.sys.language $languageCode\n")
        outputStream.writeBytes("stop\n")
        outputStream.writeBytes("start\n") // 重启系统生效
        outputStream.flush()
        outputStream.close()
        process.waitFor()
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

注意:执行该命令会重启设备,且需要设备已获取ROOT权限,同时不同ROM的系统属性可能略有差异,需要根据实际情况调整命令。

另外,如果你的需求只是修改自身应用内的语言(而非系统级),普通应用可以通过修改应用内的Configuration实现,示例代码如下:

import android.content.Context
import android.content.res.Configuration
import java.util.Locale

fun setAppLanguage(context: Context, languageCode: String) {
    val locale = Locale(languageCode)
    Locale.setDefault(locale)
    
    val config = Configuration(context.resources.configuration)
    config.setLocale(locale)
    context.createConfigurationContext(config)
    context.resources.updateConfiguration(config, context.resources.displayMetrics)
    
    // 重启当前Activity使设置生效
    (context as? androidx.appcompat.app.AppCompatActivity)?.recreate()
}

内容的提问来源于stack exchange,提问作者lamine ml

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:10:27