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

Android 14启用输入法时触发SecurityException问题求助

Android 14(SDK 34)输入法功能SecurityException异常解决方案

之前在Android系统中正常运行的输入法启用功能,在Android 14(SDK 34)环境下测试时触发如下致命异常:

Fatal Exception: java.lang.SecurityException: Settings key: <enabled_input_methods> is only readable to apps with targetSdkVersion lower than or equal to: 33 
at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:3547) 
at android.provider.Settings$Secure.getStringForUser(Settings.java:9482) 
at android.provider.Settings$Secure.getString(Settings.java:9448)

问题原因

Android 14(SDK 34)收紧了系统设置权限,Settings.Secure.ENABLED_INPUT_METHODS仅允许targetSdkVersion ≤33的应用读取,当应用targetSdkVersion升级到34后,直接读取该设置项就会抛出SecurityException。

解决方案

  • 使用系统InputMethodManagerAPI替代直接读取系统设置,获取已启用输入法列表:
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    List<InputMethodInfo> enabledImeList = imm.getEnabledInputMethodList();
    
  • 若需检查特定输入法是否启用,可通过InputMethodInfo属性判断,或调用imm.isCurrentInputMethodEnabled(imeId)方法(传入对应输入法ID)。

适配注意事项

  • 升级targetSdkVersion到34后,必须移除所有直接读取Settings.Secure.ENABLED_INPUT_METHODS的代码。
  • 测试时覆盖Android 14及更低版本,getEnabledInputMethodList()在低版本系统中同样兼容,不会出现兼容问题。

内容的提问来源于stack exchange,提问作者Tayyab Amin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:08