From 3f3c5a1951d83489348bfafd366227373efc87be Mon Sep 17 00:00:00 2001 From: Chris Narkiewicz Date: Wed, 18 Dec 2019 14:25:24 +0000 Subject: [PATCH] Fix NPE crash on startup when storage manager is not set Fixes #4941 Signed-off-by: Chris Narkiewicz --- .../owncloud/android/ui/activity/BaseActivity.java | 14 ++++++++------ .../android/ui/activity/FileDisplayActivity.java | 11 ++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java b/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java index 29c544b89c..a02d2e324d 100644 --- a/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java @@ -69,6 +69,13 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab return accountManager; } + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Account account = accountManager.getCurrentAccount(); + setAccount(account, false); + } + @Override protected void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); @@ -97,12 +104,6 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab } } - public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { - super.onCreate(savedInstanceState, persistentState); - Account account = accountManager.getCurrentAccount(); - setAccount(account, false); - } - @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); @@ -177,6 +178,7 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab if (newAccount == null) { /// no account available: force account creation createAccount(true); + finish(); } else { currentAccount = newAccount; } diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index b9bf59894d..7ba14ae754 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -2539,8 +2539,9 @@ public class FileDisplayActivity extends FileActivity @Override public void onStart() { super.onStart(); - Optional optionalUser = getUser(); - if (optionalUser.isPresent()) { + final Optional optionalUser = getUser(); + final FileDataStorageManager storageManager = getStorageManager(); + if (optionalUser.isPresent() && storageManager != null) { /// Check whether the 'main' OCFile handled by the Activity is contained in the // current Account OCFile file = getFile(); @@ -2552,17 +2553,17 @@ public class FileDisplayActivity extends FileActivity // cache until the upload is successful get parent from path parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName())); - if (getStorageManager().getFileByPath(parentPath) == null) { + if (storageManager.getFileByPath(parentPath) == null) { file = null; // not able to know the directory where the file is uploading } } else { - file = getStorageManager().getFileByPath(file.getRemotePath()); + file = storageManager.getFileByPath(file.getRemotePath()); // currentDir = null if not in the current Account } } if (file == null) { // fall back to root folder - file = getStorageManager().getFileByPath(OCFile.ROOT_PATH); // never returns null + file = storageManager.getFileByPath(OCFile.ROOT_PATH); // never returns null } setFile(file);