summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt/android/QtNative.java
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2022-02-15 19:25:02 +0200
committerSamuel Mira <samuel.mira@qt.io>2022-03-02 11:23:54 +0200
commitfef455999aa2930289137115ab446761cd4b40db (patch)
tree525e0294f24a710f4a303a1c2386d1cc5d858604 /src/android/jar/src/org/qtproject/qt/android/QtNative.java
parent18f386782739ce96e212e187f84aa40c90c96919 (diff)
Android: Fix issue in loading multimedia Android plugin
Qt projects on Android were failing to correctly load the plugin lib. The main reason is missing environment variables when the media integration starts. To make sure that the variables are loaded, I have change the setenv to be done in the java side instead of c++ side. Fixes: QTBUG-100299 Pick-to: 6.3 Change-Id: Iba0b6af40574be2d88824ebdcfb1626335cecf09 Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtNative.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
index c7eb71bb50..201c40036c 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
@@ -61,6 +61,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
+import android.system.Os;
import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.ClipDescription;
@@ -620,7 +621,7 @@ public class QtNative
});
}
- public static boolean startApplication(String params, final String environment, String mainLib) throws Exception
+ public static boolean startApplication(String params, String mainLib) throws Exception
{
if (params == null)
params = "-platform\tandroid";
@@ -634,7 +635,7 @@ public class QtNative
m_qtThread.run(new Runnable() {
@Override
public void run() {
- res[0] = startQtAndroidPlugin(qtParams, environment);
+ res[0] = startQtAndroidPlugin(qtParams);
setDisplayMetrics(
m_displayMetricsScreenWidthPixels, m_displayMetricsScreenHeightPixels,
m_displayMetricsAvailableLeftPixels, m_displayMetricsAvailableTopPixels,
@@ -693,7 +694,7 @@ public class QtNative
// application methods
- public static native boolean startQtAndroidPlugin(String params, String env);
+ public static native boolean startQtAndroidPlugin(String params);
public static native void startQtApplication();
public static native void waitForServiceSetup();
public static native void quitQtCoreApplication();
@@ -1367,6 +1368,40 @@ public class QtNative
return res.toArray(new String[res.size()]);
}
+ /**
+ *Sets a single environment variable
+ *
+ * returns true if the value was set, false otherwise.
+ * in case it cannot set value will log the exception
+ **/
+ public static void setEnvironmentVariable(String key, String value)
+ {
+ try {
+ android.system.Os.setenv(key, value, true);
+ } catch (Exception e) {
+ Log.e(QtNative.QtTAG, "Could not set environment variable:" + key + "=" + value);
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ *Sets multiple environment variables
+ *
+ * Uses '\t' as divider between variables and '=' between key/value
+ * Ex: key1=val1\tkey2=val2\tkey3=val3
+ * Note: it assumed that the key cannot have '=' but the value can
+ **/
+ public static void setEnvironmentVariables(String environmentVariables)
+ {
+ for (String variable : environmentVariables.split("\t")) {
+ String[] keyvalue = variable.split("=", 2);
+ if (keyvalue.length < 2 || keyvalue[0].isEmpty())
+ continue;
+
+ setEnvironmentVariable(keyvalue[0], keyvalue[1]);
+ }
+ }
+
// screen methods
public static native void setDisplayMetrics(int screenWidthPixels, int screenHeightPixels,
int availableLeftPixels, int availableTopPixels,