From 4be5d5820361f1482c63c3eeb7eaac5d61a2b211 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 10 Oct 2013 14:49:47 +0200 Subject: [PATCH] Android: Make it possible to pass arguments via intent extras Needed for autotest script, so that we can pass command line arguments to Qt Test. This can now be done by: % adb shell am start \ -e applicationArguments "argument1 argument2" \ Change-Id: I772209f66da055c6a0b01b709f36e33fdb5c2ed6 Reviewed-by: Paul Olav Tvete Reviewed-by: BogDan Vatra --- .../org/qtproject/qt5/android/bindings/QtActivity.java | 8 ++++++++ src/plugins/platforms/android/src/androidjnimain.cpp | 7 ++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java index 83ed1582bf..9c7b57a4f5 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -489,6 +489,14 @@ public class QtActivity extends Activity + "\tQML2_IMPORT_PATH=" + localPrefix + "/qml" + "\tQML_IMPORT_PATH=" + localPrefix + "/imports" + "\tQT_PLUGIN_PATH=" + localPrefix + "/plugins"); + + Intent intent = getIntent(); + if (intent != null) { + String parameters = intent.getStringExtra("applicationArguments"); + if (parameters != null) + loaderParams.putString(APPLICATION_PARAMETERS_KEY, parameters.replace(' ', '\t')); + } + loadApplication(loaderParams); return; } diff --git a/src/plugins/platforms/android/src/androidjnimain.cpp b/src/plugins/platforms/android/src/androidjnimain.cpp index b51c15c5d9..5c9ca798a8 100644 --- a/src/plugins/platforms/android/src/androidjnimain.cpp +++ b/src/plugins/platforms/android/src/androidjnimain.cpp @@ -419,14 +419,11 @@ static jboolean startQtAndroidPlugin(JNIEnv* /*env*/, jobject /*object*//*, jobj static void *startMainMethod(void */*data*/) { - char const **params; - params = static_cast(malloc(m_applicationParams.length() * sizeof(char *))); + QVarLengthArray params(m_applicationParams.size()); for (int i = 0; i < m_applicationParams.size(); i++) params[i] = static_cast(m_applicationParams[i].constData()); - int ret = m_main(m_applicationParams.length(), const_cast(params)); - - free(params); + int ret = m_main(m_applicationParams.length(), const_cast(params.data())); Q_UNUSED(ret); if (m_mainLibraryHnd) {