From 79af4e1e31f4fadcd5b0546455894b098f1acc07 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 25 Jul 2016 16:51:51 +0300 Subject: [PATCH] Android: introduce setContext setContext is needed by modules that don't need an Activity object to run (e.g. QtMultimeida, QtSensors, etc.) Task-number: QTBUG-54506 Change-Id: Ief9daff52ddefdb27092040c89dfce9e466eac5c Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../qt5/android/QtActivityDelegate.java | 18 +++++++++++++----- .../qt5/android/QtServiceDelegate.java | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java index 0cfce2c6af4..656dbdda45b 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -489,11 +489,19 @@ public class QtActivityDelegate continue; try { - @SuppressWarnings("rawtypes") - Class initClass = classLoader.loadClass(className); - Object staticInitDataObject = initClass.newInstance(); // create an instance - Method m = initClass.getMethod("setActivity", Activity.class, Object.class); - m.invoke(staticInitDataObject, m_activity, this); + Class initClass = classLoader.loadClass(className); + Object staticInitDataObject = initClass.newInstance(); // create an instance + try { + Method m = initClass.getMethod("setActivity", Activity.class, Object.class); + m.invoke(staticInitDataObject, m_activity, this); + } catch (Exception e) { + } + + try { + Method m = initClass.getMethod("setContext", Context.class); + m.invoke(staticInitDataObject, (Context)m_activity); + } catch (Exception e) { + } } catch (Exception e) { e.printStackTrace(); } diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java index 634658eefb2..5ac406c710c 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java @@ -120,12 +120,20 @@ public class QtServiceDelegate for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) { if (className.length() == 0) continue; - try { - Class initClass = classLoader.loadClass(className); - Object staticInitDataObject = initClass.newInstance(); // create an instance - Method m = initClass.getMethod("setService", Service.class, Object.class); - m.invoke(staticInitDataObject, m_service, this); + Class initClass = classLoader.loadClass(className); + Object staticInitDataObject = initClass.newInstance(); // create an instance + try { + Method m = initClass.getMethod("setService", Service.class, Object.class); + m.invoke(staticInitDataObject, m_service, this); + } catch (Exception e) { + } + + try { + Method m = initClass.getMethod("setContext", Context.class); + m.invoke(staticInitDataObject, (Context)m_service); + } catch (Exception e) { + } } catch (Exception e) { e.printStackTrace(); }