android - 使用 Intent 将变量传递给 Zooper 小部件

标签 android python android-intent sl4a

所以我一直在使用 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 小部件执行相同的操作,在联系开发人员后他告诉我:

just send a Broadcast with "org.zooper.zw.action. TASKERVAR" action, add a Bundle to the intent as "org.zooper.zw.tasker.var.extra.BUNDLE" with "org.zooper.zw.tasker.var.extra.STRING_VAR" and "org.zooper.zw.tasker.var.extra.STRING_TEXT".

不幸的是,我对 Intent 系统的工作原理了解有限,但我尝试了几种我认为可行的方法:

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)

不幸的是,这些都行不通。

最佳答案

我只是尝试在 SDK 中制作类似的东西,我发现你也应该在包中传递一个整数,键是“org.zooper.zw.tasker.var.extra.INT_VERSION_CODE”,值为“1”。

不知道如何在 Python 中执行此操作,但这是我在 Java 中的代码 fragment (它有效,我测试过)

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) 它不起作用。我知道这是一个老问题,但我希望能有所帮助。

关于android - 使用 Intent 将变量传递给 Zooper 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310554/

相关文章:

android - 键盘未显示在带有 EditText ListView 的警报对话框中

android - 启动后简单的android应用崩溃

android - 将应用程序中的图像设置为墙纸

android - 使用 Android 库项目时,如何正确引用 xml 资源?

java - AsyncTask onPostExecute 错误中的新 Intent

Python继承模式——如何处理反序列化

Python/Flask : How to tell how long a user spends on a page?(数据输入/时间日志应用程序)

python插入字符串中间

android - 在 Android 中打开布局而不触摸通知

android - 在 ListView 中启动 Activity