浏览代码

Remove DI from NContentObserverJob

Removing DI from the service fixes DI crash on older
devices when JobService is not provided by the system,
prevending ClassNotFoundException.

A proper fix for this issue must follow.

Signed-off-by: Chris Narkiewicz <hello@ezaquarii.com>
Chris Narkiewicz 5 年之前
父节点
当前提交
c02f79e05a

+ 16 - 0
src/main/java/com/owncloud/android/MainApp.java

@@ -175,6 +175,22 @@ public class MainApp extends MultiDexApplication implements
         mContext = context;
     }
 
+    /**
+     * Temporary getter replacing Dagger DI
+     * TODO: remove when cleaning DI in NContentObserverJob
+     */
+    public AppPreferences getPreferences() {
+        return preferences;
+    }
+
+    /**
+     * Temporary getter replacing Dagger DI
+     * TODO: remove when cleaning DI in NContentObserverJob
+     */
+    public PowerManagementService getPowerManagementService() {
+        return powerManagementService;
+    }
+
     @Override
     protected void attachBaseContext(Context base) {
         super.attachBaseContext(base);

+ 9 - 6
src/main/java/com/owncloud/android/jobs/NContentObserverJob.java

@@ -29,13 +29,11 @@ import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
 import com.nextcloud.client.device.PowerManagementService;
 import com.nextcloud.client.preferences.AppPreferences;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
 import com.owncloud.android.utils.FilesSyncHelper;
 
-import javax.inject.Inject;
-
 import androidx.annotation.RequiresApi;
-import dagger.android.AndroidInjection;
 
 /*
     Job that triggers new FilesSyncJob in case new photo or video were detected
@@ -44,13 +42,18 @@ import dagger.android.AndroidInjection;
 @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
 public class NContentObserverJob extends JobService {
 
-    @Inject PowerManagementService powerManagementService;
-    @Inject AppPreferences preferences;
+    private PowerManagementService powerManagementService;
+    private AppPreferences preferences;
 
     @Override
     public void onCreate() {
         super.onCreate();
-        AndroidInjection.inject(this);
+
+        // Temporary workaround for https://github.com/nextcloud/android/issues/4147
+        // TODO: this must be fixed properly
+        MainApp app = (MainApp) getApplication();
+        powerManagementService = app.getPowerManagementService();
+        preferences = app.getPreferences();
     }
 
     @Override