使用 SL4A 从 python 脚本返回结果返回到 Android 应用程序

Posted

技术标签:

【中文标题】使用 SL4A 从 python 脚本返回结果返回到 Android 应用程序【英文标题】:Return Result from a python script using SL4A back to Android App 【发布时间】:2012-08-21 17:38:01 【问题描述】:

在我的 java android 应用程序中调用 startActivityForResult() 后,我试图使用 (SL4A) 从 python 脚本中获取结果。但是我总是在我的 onActivityResult() 中得到一个空意图

从我的 Java 应用程序运行 python 脚本

public static Intent buildStartInBackgroundIntent(File script) 
final ComponentName componentName = Constants.SL4A_SERVICE_LAUNCHER_COMPONENT_NAME;
Intent intent = new Intent();
intent.setComponent(componentName);
intent.setAction(Constants.ACTION_LAUNCH_BACKGROUND_SCRIPT);
intent.putExtra(Constants.EXTRA_SCRIPT_PATH, script.getAbsolutePath());
return intent;

@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_layout_running);
String pythonScript = "/sdcard/sl4a/scripts/pythondecoder.py";
Intent intent = buildStartInBackgroundIntent(new File(pythonScript));
intent.putExtra("serialinput","MessageIn");
startActivityForResult(intent, PYTHONSCRIPTDECODE);

完成后从 pythonscript 接收结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
switch(requestCode)
case  PYTHONSCRIPTDECODE:
Log.d("Robin_ValueCheck","Python reply me -> "+data.getExtras().getString("SCRIPT_RESULT"));
break;

然而在 Activity 结果之后,Logcat Error Msg.

08-27 09:56:41.945: E/AndroidRuntime(29438): java.lang.RuntimeException: Failure delivering result ResultInfowho=null, request=3050, result=0, data=null to activity xxx.xxx.xxx/com.xxx.xxx.CustomLayoutViewer: java.lang.NullPointerException

这是我的 Python 脚本,由 SL4A 运行

import android
droid = android.Android()
mIntent = droid.getIntent().result
Extras = mIntent["extras"]
Input = Extras["serialinput"]

Result_OK = -1
resultData = "Returned from SL4a Script!"
droid.setResultString(Result_OK, resultData)

当 python 脚本退出时,我的 onActivityResult 会收到通知,如 REQUEST = 3050 所示。但是应该返回的 Intent 是 NULL。我已经在我的 python 脚本中调用了 setResultString() 。知道可能出了什么问题吗?

【问题讨论】:

【参考方案1】:

不幸的是,这不起作用,另请参阅第 239 期...您可能想在该问题上加注星标:http://code.google.com/p/android-scripting/issues/detail?id=239

【讨论】:

以上链接失效。请点击链接。 “允许脚本以结果退出”github.com/damonkohler/sl4a/issues/262

以上是关于使用 SL4A 从 python 脚本返回结果返回到 Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 sl4a 将事件从 python 发送到 javascript

有没有办法从其他地方的目录运行 SL4A 脚本?

sl4a python通知问题

从 Android 开始:Java 或 Python (SL4A)

从 SL4A 脚本启动 android 应用程序?

脚本在不同的机器上返回不同的结果