summaryrefslogtreecommitdiffstats
path: root/src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java b/src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java
index f6add928e1..b045b9abff 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtServiceLoader.java
@@ -5,35 +5,47 @@
package org.qtproject.qt.android;
import android.app.Service;
-import android.os.Bundle;
import android.content.ComponentName;
import android.content.pm.PackageManager;
+import android.util.Log;
-import java.security.Provider;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
public class QtServiceLoader extends QtLoader {
- Service m_service;
+ private final Service m_service;
public QtServiceLoader(Service service) {
super(service);
m_service = service;
+
+ extractContextMetaData();
}
- public void onCreate() {
+ @Override
+ protected void initContextInfo() {
try {
- m_contextInfo = m_service.getPackageManager().getServiceInfo(new ComponentName(
- m_service, m_service.getClass()), PackageManager.GET_META_DATA);
+ m_contextInfo = m_service.getPackageManager().getServiceInfo(
+ new ComponentName(m_service, m_service.getClass()),
+ PackageManager.GET_META_DATA);
} catch (Exception e) {
e.printStackTrace();
- m_service.stopSelf();
- return;
+ finish();
}
-
- startApp(true);
}
@Override
protected void finish() {
m_service.stopSelf();
}
+
+ @Override
+ protected void initStaticClassesImpl(Class<?> initClass, Object staticInitDataObject) {
+ try {
+ Method m = initClass.getMethod("setService", Service.class, Object.class);
+ m.invoke(staticInitDataObject, m_service, this);
+ } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
+ Log.d(QtTAG, "Class " + initClass.getName() + " does not implement setService method");
+ }
+ }
}