Browse Source

Fix wrong context usage

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 10 months ago
parent
commit
a402a4d48f

+ 0 - 4
app/build.gradle

@@ -128,8 +128,6 @@ android {
         testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
         testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
         testInstrumentationRunnerArguments disableAnalytics: 'true'
         testInstrumentationRunnerArguments disableAnalytics: 'true'
 
 
-        multiDexEnabled true
-
         versionCode versionMajor * 10000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
         versionCode versionMajor * 10000000 + versionMinor * 10000 + versionPatch * 100 + versionBuild
 
 
         if (versionBuild > 89) {
         if (versionBuild > 89) {
@@ -265,8 +263,6 @@ android {
 }
 }
 
 
 dependencies {
 dependencies {
-    // dependencies for app building
-    implementation 'androidx.multidex:multidex:2.0.1'
     implementation("com.github.nextcloud:android-library:$androidLibraryVersion") {
     implementation("com.github.nextcloud:android-library:$androidLibraryVersion") {
         exclude group: 'org.ogce', module: 'xpp3' // unused in Android and brings wrong Junit version
         exclude group: 'org.ogce', module: 'xpp3' // unused in Android and brings wrong Junit version
     }
     }

+ 9 - 3
app/src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java

@@ -18,6 +18,7 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
 import android.preference.PreferenceManager;
 import android.text.TextUtils;
 import android.text.TextUtils;
+import android.util.Log;
 
 
 import com.nextcloud.common.NextcloudClient;
 import com.nextcloud.common.NextcloudClient;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.MainApp;
@@ -52,10 +53,10 @@ public class UserAccountManagerImpl implements UserAccountManager {
     private static final String PREF_SELECT_OC_ACCOUNT = "select_oc_account";
     private static final String PREF_SELECT_OC_ACCOUNT = "select_oc_account";
 
 
     private Context context;
     private Context context;
-    private AccountManager accountManager;
+    private final AccountManager accountManager;
 
 
     public static UserAccountManagerImpl fromContext(Context context) {
     public static UserAccountManagerImpl fromContext(Context context) {
-        AccountManager am = (AccountManager)context.getSystemService(Context.ACCOUNT_SERVICE);
+        AccountManager am = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
         return new UserAccountManagerImpl(context, am);
         return new UserAccountManagerImpl(context, am);
     }
     }
 
 
@@ -181,7 +182,12 @@ public class UserAccountManagerImpl implements UserAccountManager {
             return null;
             return null;
         }
         }
 
 
-        OwnCloudAccount ownCloudAccount = null;
+        if (context == null) {
+            Log_OC.d(TAG, "Context is null MainApp.getAppContext() used");
+            context = MainApp.getAppContext();
+        }
+
+        OwnCloudAccount ownCloudAccount;
         try {
         try {
             ownCloudAccount = new OwnCloudAccount(account, context);
             ownCloudAccount = new OwnCloudAccount(account, context);
         } catch (AccountUtils.AccountNotFoundException ex) {
         } catch (AccountUtils.AccountNotFoundException ex) {

+ 9 - 9
app/src/main/java/com/owncloud/android/MainApp.java

@@ -91,6 +91,7 @@ import com.owncloud.android.utils.theme.ViewThemeUtils;
 import org.conscrypt.Conscrypt;
 import org.conscrypt.Conscrypt;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
 
 
+import java.lang.ref.WeakReference;
 import java.lang.reflect.Method;
 import java.lang.reflect.Method;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
 import java.security.Security;
 import java.security.Security;
@@ -114,7 +115,6 @@ import androidx.core.util.Pair;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleEventObserver;
 import androidx.lifecycle.LifecycleEventObserver;
 import androidx.lifecycle.ProcessLifecycleOwner;
 import androidx.lifecycle.ProcessLifecycleOwner;
-import androidx.multidex.MultiDexApplication;
 import dagger.android.AndroidInjector;
 import dagger.android.AndroidInjector;
 import dagger.android.DispatchingAndroidInjector;
 import dagger.android.DispatchingAndroidInjector;
 import dagger.android.HasAndroidInjector;
 import dagger.android.HasAndroidInjector;
@@ -129,14 +129,14 @@ import static com.owncloud.android.ui.activity.ContactsPreferenceActivity.PREFER
  * Main Application of the project.
  * Main Application of the project.
  * Contains methods to build the "static" strings. These strings were before constants in different classes.
  * Contains methods to build the "static" strings. These strings were before constants in different classes.
  */
  */
-public class MainApp extends MultiDexApplication implements HasAndroidInjector {
+public class MainApp extends Application implements HasAndroidInjector {
     public static final OwnCloudVersion OUTDATED_SERVER_VERSION = NextcloudVersion.nextcloud_26;
     public static final OwnCloudVersion OUTDATED_SERVER_VERSION = NextcloudVersion.nextcloud_26;
     public static final OwnCloudVersion MINIMUM_SUPPORTED_SERVER_VERSION = OwnCloudVersion.nextcloud_16;
     public static final OwnCloudVersion MINIMUM_SUPPORTED_SERVER_VERSION = OwnCloudVersion.nextcloud_16;
 
 
     private static final String TAG = MainApp.class.getSimpleName();
     private static final String TAG = MainApp.class.getSimpleName();
     public static final String DOT = ".";
     public static final String DOT = ".";
 
 
-    private static Context mContext;
+    private static WeakReference<Context> appContext;
 
 
     private static String storagePath;
     private static String storagePath;
 
 
@@ -208,7 +208,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
      * Temporary hack
      * Temporary hack
      */
      */
     private static void initGlobalContext(Context context) {
     private static void initGlobalContext(Context context) {
-        mContext = context;
+        appContext = new WeakReference<>(context);
     }
     }
 
 
     /**
     /**
@@ -491,7 +491,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
     }
     }
 
 
     public static void initContactsBackup(UserAccountManager accountManager, BackgroundJobManager backgroundJobManager) {
     public static void initContactsBackup(UserAccountManager accountManager, BackgroundJobManager backgroundJobManager) {
-        ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProviderImpl(mContext);
+        ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProviderImpl(appContext.get());
         List<User> users = accountManager.getAllUsers();
         List<User> users = accountManager.getAllUsers();
         for (User user : users) {
         for (User user : users) {
             if (arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP)) {
             if (arbitraryDataProvider.getBooleanValue(user, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP)) {
@@ -609,7 +609,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
             preferences.setAutoUploadInit(true);
             preferences.setAutoUploadInit(true);
         }
         }
 
 
-        FilesSyncHelper.scheduleFilesSyncForAllFoldersIfNeeded(mContext, syncedFolderProvider, backgroundJobManager);
+        FilesSyncHelper.scheduleFilesSyncForAllFoldersIfNeeded(appContext.get(), syncedFolderProvider, backgroundJobManager);
         FilesSyncHelper.restartUploadsIfNeeded(
         FilesSyncHelper.restartUploadsIfNeeded(
             uploadsStorageManager,
             uploadsStorageManager,
             accountManager,
             accountManager,
@@ -705,11 +705,11 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
     }
     }
 
 
     public static Context getAppContext() {
     public static Context getAppContext() {
-        return MainApp.mContext;
+        return MainApp.appContext.get();
     }
     }
 
 
     public static void setAppContext(Context context) {
     public static void setAppContext(Context context) {
-        MainApp.mContext = context;
+        MainApp.appContext = new WeakReference<>(context);
     }
     }
 
 
     public static String getStoragePath() {
     public static String getStoragePath() {
@@ -831,7 +831,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
         if (!preferences.isAutoUploadPathsUpdateEnabled()) {
         if (!preferences.isAutoUploadPathsUpdateEnabled()) {
             SyncedFolderProvider syncedFolderProvider =
             SyncedFolderProvider syncedFolderProvider =
                 new SyncedFolderProvider(MainApp.getAppContext().getContentResolver(), preferences, clock);
                 new SyncedFolderProvider(MainApp.getAppContext().getContentResolver(), preferences, clock);
-            syncedFolderProvider.updateAutoUploadPaths(mContext);
+            syncedFolderProvider.updateAutoUploadPaths(appContext.get());
         }
         }
     }
     }