使用SL4A将python脚本返回到Android App

时间:2012-08-27 08:21:14

标签: android python sl4a

我试图在我的java android应用程序中调用startActivityForResult()之后使用(SL4A)获取python脚本的结果。但是我的onActivityResult()

总是得到一个null意图

从我的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;
}

但是根据活动结果,Logcat错误消息

08-27 09:56:41.945: E/AndroidRuntime(29438): java.lang.RuntimeException: Failure delivering result ResultInfo{who=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 个答案:

答案 0 :(得分:1)

不幸的是,这不起作用,另请参阅问题239 ...您可能想在那里出问题:http://code.google.com/p/android-scripting/issues/detail?id=239