所以我使用Local intent将我的python脚本中的变量发送到minimalistictext小部件一段时间。
This is my code from a previous question:
import android
droid = android.Android()
activity = 'com.twofortyfouram.locale.intent.action.FIRE_SETTING'
extras = {}
extras['de.devmil.minimaltext.locale.extras.VAR_NAME'] = 'test'
extras['de.devmil.minimaltext.locale.extras.VAR_TEXT'] = 'Passed'
packagename = 'de.devmil.minimaltext'
classname = 'de.devmil.minimaltext.locale.LocaleFireReceiver'
intent = droid.makeIntent(activity, None, None, extras, None, packagename, classname).result
droid.sendBroadcastIntent(intent)
现在我试图对Zooper小部件做同样的事情,在联系开发者后他告诉我这个:
只需发送带有“org.zooper.zw.action.TASKERVAR”动作的广播, 将一个Bundle添加到意图“org.zooper.zw.tasker.var.extra.BUNDLE” 用“org.zooper.zw.tasker.var.extra.STRING_VAR”和 “org.zooper.zw.tasker.var.extra.STRING_TEXT”。
遗憾的是,我对意图系统的运作方式只有有限的了解,但我尝试了几种我认为可能的方法:
import android
droid = android.Android()
activity = 'org.zooper.zw.action.TASKERVAR'
extras = {}
extras['org.zooper.zw.tasker.var.extra.STRING_VAR'] = '#TTest#'
extras['org.zooper.zw.tasker.var.extra.STRING_TEXT'] = 'Passed'
packagename = 'org.zooper.zw'
classname = 'org.zooper.zw.tasker.var.extra.BUNDLE'
intent = droid.makeIntent(activity, None, None, extras, None, packagename, classname).result
droid.sendBroadcastIntent(intent)
和
import android
droid = android.Android()
activity = 'org.zooper.zw.action.TASKERVAR'
extras = {}
extras['org.zooper.zw.tasker.var.extra.BUNDLE'] = {'org.zooper.zw.tasker.var.extra.STRING_VAR':'#TTest#','org.zooper.zw.tasker.var.extra.STRING_TEXT':'Passed'}
intent = droid.makeIntent(activity, None, None, extras, None, None, None).result
droid.sendBroadcastIntent(intent)
不幸的是,这不起作用。
答案 0 :(得分:3)
我刚尝试在SDK中制作类似的东西,我发现你也应该将一个整数传递给一个整数,键是“org.zooper.zw.tasker.var.extra.INT_VERSION_CODE”,其值为“1”。 / p>
不知道如何在Python中执行此操作,但这是我在Java中的代码段(它有效,我测试过它)
public static final String INTENT_ACTION = "org.zooper.zw.action.TASKERVAR";
public static final String BUNDLE_STRING_NAME = "org.zooper.zw.tasker.var.extra.STRING_VAR";
public static final String BUNDLE_STRING_VALUE = "org.zooper.zw.tasker.var.extra.STRING_TEXT";
public static final String BUNDLE_VERSION_CODE = "org.zooper.zw.tasker.var.extra.INT_VERSION_CODE";
public static final String BUNDLE_NAME = "org.zooper.zw.tasker.var.extra.BUNDLE";
public static final String VARIABLE_NAME = "test";
public void sendUpdate() {
Intent in = new Intent(INTENT_ACTION);
Bundle b = new Bundle();
String value = "Final variable value";
b.putInt(BUNDLE_VERSION_CODE, 1);
b.putString(BUNDLE_STRING_NAME, VARIABLE_NAME);
b.putString(BUNDLE_STRING_VALUE, value);
in.putExtra(BUNDLE_NAME, b);
sendBroadcast(in);
}
这对我有用。没有b.putInt(BUNDLE_VERSION_CODE, 1)
它没有用。我知道这是一个老问题,但我希望能提供帮助。