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

在Tasker中通过JavaScript获取Android设备Locale失败求助

在Tasker中用JavaScript获取Android Locale的正确姿势

我帮你搞定这个问题!你遇到的变量为空和报错问题,主要是因为Tasker的JavaScript运行环境(Rhino)对Android API的调用规则有特殊要求,还有变量暴露的方式不对。下面给你一步步解决:

核心问题分析

  1. 类名不完整导致变量为空:你直接写Locale.getDefault()或者Resources.getSystem(),Rhino引擎找不到对应的Android类——必须写完整的包路径,比如java.util.Locale、android.content.res.Resources。
  2. 用String声明变量报错:JavaScript是弱类型语言,不能像Java那样用String作为变量类型,只能用var/let/const声明,所以这才会触发语法错误。
  3. 变量未同步到Tasker:就算JS里的变量有值,你也得用Tasker提供的setGlobal()方法把值存到Tasker的全局变量里,不然Tasker外面拿不到这个值。

正确的脚本示例

方法1:直接获取默认Locale

// 完整类名调用Android API
var deviceLocale = java.util.Locale.getDefault().toString();
// 把值存入Tasker全局变量%LOCALE
setGlobal("LOCALE", deviceLocale);

方法2:通过Configuration获取Locale(适配Android 7.0+)

var resources = android.content.res.Resources.getSystem();
var config = resources.getConfiguration();
// 获取第一个Locale(多语言环境下的首选语言)
var deviceLocale = config.getLocales().get(0).toString();
setGlobal("LOCALE", deviceLocale);

如何使用

  1. 在Tasker里新建一个任务,添加「JavaScript」动作;
  2. 把上面的脚本粘贴到代码框里;
  3. 运行任务后,你就能在Tasker的变量列表里找到%LOCALE,它的值就是设备的Locale(比如zh_CN、en_US)。

进阶:拆分Locale的语言和国家代码

如果需要单独获取语言或国家代码,可以这样写:

var loc = java.util.Locale.getDefault();
var langCode = loc.getLanguage(); // 比如"zh"
var countryCode = loc.getCountry(); // 比如"CN"
setGlobal("LOCALE_LANG", langCode);
setGlobal("LOCALE_COUNTRY", countryCode);

内容的提问来源于stack exchange,提问作者Summer Son

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:22:28