Android 13调用ACTION_APP_LOCALE_SETTINGS报错问题求助
问题原因及解决方法
- 代码存在格式错误,Android 13已实现应用区域设置功能,报错是因为Intent的Uri参数格式不符合系统要求。
- 系统处理
ACTION_APP_LOCALE_SETTINGS时,需要传递带packagescheme的Uri,或是通过setPackage()方法指定目标应用包名。你直接传入纯包名字符串解析Uri,会导致系统无法识别目标应用,进而找不到对应的处理Activity。
修正后的代码
方式一:使用正确的Uri格式
override fun openAppLocaleSettings(activity: Activity) { activity.startActivity( Intent(Settings.ACTION_APP_LOCALE_SETTINGS) .setData(Uri.fromParts("package", activity.packageName, null)) ) }
方式二:通过setPackage指定包名
override fun openAppLocaleSettings(activity: Activity) { activity.startActivity( Intent(Settings.ACTION_APP_LOCALE_SETTINGS) .setPackage(activity.packageName) ) }
- 额外建议:调用前增加可用性校验,避免在低版本系统或特殊设备上崩溃:
override fun openAppLocaleSettings(activity: Activity) { val intent = Intent(Settings.ACTION_APP_LOCALE_SETTINGS) .setData(Uri.fromParts("package", activity.packageName, null)) if (intent.resolveActivity(activity.packageManager) != null) { activity.startActivity(intent) } }
内容的提问来源于stack exchange,提问作者Damiancioo
相关产品推荐
相关产品推荐

