Tasker 插件变量替换:开发人员
Tasker Plugin Variable Replacement: Developer
我正在为 Taker Android 应用制作一个插件。该插件基本上允许人们使用自己的设置值动态创建列表和卡片视图。
我认为还允许使用 Tasker 变量来设置列表项等会很好。这就是我正在努力解决的问题。
这是我为此获得的代码部分(在我的 EditActivity 中):
resultBundle.putString("MessageString", message);
resultBundle.putString("ContentString", AlertContents);
resultBundle.putString("BackgroundColour", BackgroundCol);
resultBundle.putString("TextColour", TextCol);
resultBundle.putStringArrayList("myArray", theList);
resultIntent.putExtras(resultBundle);
//Take above values and replace any %Variables with the Tassker values in the host
if ( TaskerPlugin.Setting.hostSupportsOnFireVariableReplacement( this ) )
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "MessageString" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "ContentString" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "BackgroundColour" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "TextColour" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "myArray " } );
resultIntent.putExtras(resultBundle);
本质上,这是将我的值设置到一个包中,然后根据我的理解,'setVriableReplaceKeys' 函数遍历我在包中指定的每个 keypai 以替换任何 taskerr 变量(例如 %BATT)将当前值存储在主机中。下面的代码不起作用,我只看到写出的变量名没有任何值,所以如果我用 %BATT 对其进行测试,我会在列表中看到 %BATT 而不是实际的电池百分比。
如有任何帮助,我们将不胜感激。我已经玩了很久了。
即使这已经有一段时间了,也许答案会像问题对我一样帮助其他人。
- 您的代码存在一些问题。首先,setVariableReplaceKeys 需要一个 StringArray,所以这就足够了:
if ( TaskerPlugin.Setting.hostSupportsOnFireVariableReplacement( this ) )
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle,
new String [] { "MessageString","ContentString","TextColour","myArray" } );
}
- 您的 if 语句中缺少大括号。
- 您正在调用 putExtras 两次。第一个电话就足够了。
setVariableReplaceKeys 将为您的捆绑包添加额外内容。如果您在某处检查捆绑包是否有效,请记住这一点。
我正在为 Taker Android 应用制作一个插件。该插件基本上允许人们使用自己的设置值动态创建列表和卡片视图。
我认为还允许使用 Tasker 变量来设置列表项等会很好。这就是我正在努力解决的问题。
这是我为此获得的代码部分(在我的 EditActivity 中):
resultBundle.putString("MessageString", message);
resultBundle.putString("ContentString", AlertContents);
resultBundle.putString("BackgroundColour", BackgroundCol);
resultBundle.putString("TextColour", TextCol);
resultBundle.putStringArrayList("myArray", theList);
resultIntent.putExtras(resultBundle);
//Take above values and replace any %Variables with the Tassker values in the host
if ( TaskerPlugin.Setting.hostSupportsOnFireVariableReplacement( this ) )
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "MessageString" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "ContentString" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "BackgroundColour" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "TextColour" } );
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle, new String [] { "myArray " } );
resultIntent.putExtras(resultBundle);
本质上,这是将我的值设置到一个包中,然后根据我的理解,'setVriableReplaceKeys' 函数遍历我在包中指定的每个 keypai 以替换任何 taskerr 变量(例如 %BATT)将当前值存储在主机中。下面的代码不起作用,我只看到写出的变量名没有任何值,所以如果我用 %BATT 对其进行测试,我会在列表中看到 %BATT 而不是实际的电池百分比。
如有任何帮助,我们将不胜感激。我已经玩了很久了。
即使这已经有一段时间了,也许答案会像问题对我一样帮助其他人。
- 您的代码存在一些问题。首先,setVariableReplaceKeys 需要一个 StringArray,所以这就足够了:
if ( TaskerPlugin.Setting.hostSupportsOnFireVariableReplacement( this ) )
TaskerPlugin.Setting.setVariableReplaceKeys( resultBundle,
new String [] { "MessageString","ContentString","TextColour","myArray" } );
}
- 您的 if 语句中缺少大括号。
- 您正在调用 putExtras 两次。第一个电话就足够了。
setVariableReplaceKeys 将为您的捆绑包添加额外内容。如果您在某处检查捆绑包是否有效,请记住这一点。