Browse Source

Fix exception when closing choose storage location dialogue

- read storagePath from shared preferences
- check if storagePath is null

Signed-off-by: ZetaTom <70907959+ZetaTom@users.noreply.github.com>
ZetaTom 6 months ago
parent
commit
633d8de28c

+ 9 - 1
app/src/main/java/com/owncloud/android/ui/activity/SettingsActivity.java

@@ -799,6 +799,8 @@ public class SettingsActivity extends PreferenceActivity
         final PreferenceCategory preferenceCategoryGeneral = (PreferenceCategory) findPreference("general");
         viewThemeUtils.files.themePreferenceCategory(preferenceCategoryGeneral);
 
+        readStoragePath();
+
         prefDataLoc = findPreference(AppPreferencesImpl.DATA_STORAGE_LOCATION);
         if (prefDataLoc != null) {
             prefDataLoc.setOnPreferenceClickListener(p -> {
@@ -978,7 +980,7 @@ public class SettingsActivity extends PreferenceActivity
         } else if (requestCode == ACTION_SET_STORAGE_LOCATION && data != null) {
             String newPath = data.getStringExtra(ChooseStorageLocationActivity.KEY_RESULT_STORAGE_LOCATION);
 
-            if (!storagePath.equals(newPath)) {
+            if (storagePath != null && !storagePath.equals(newPath)) {
                 StorageMigration storageMigration = new StorageMigration(this, user, storagePath, newPath, viewThemeUtils);
                 storageMigration.setStorageMigrationProgressListener(this);
                 storageMigration.migrate();
@@ -1128,6 +1130,12 @@ public class SettingsActivity extends PreferenceActivity
         editor.apply();
     }
 
+    private void readStoragePath() {
+        SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+        // Load storage path from shared preferences. Use private internal storage by default.
+        storagePath = appPrefs.getString(AppPreferencesImpl.STORAGE_PATH, getApplicationContext().getFilesDir().getAbsolutePath());
+    }
+
     @Override
     public void onStorageMigrationFinished(String storagePath, boolean succeed) {
         if (succeed) {