Fixed CRASH due to NullPointerException when a details actitivity is brough to foregr...
authorDavid A. Velasco <dvelasco@solidgear.es>
Thu, 7 Mar 2013 11:38:47 +0000 (12:38 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Thu, 7 Mar 2013 11:38:47 +0000 (12:38 +0100)
src/com/owncloud/android/AccountUtils.java
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

index f38b2e7..dd1893a 100644 (file)
@@ -61,7 +61,9 @@ public class AccountUtils {
                     break;\r
                 }\r
             }\r
                     break;\r
                 }\r
             }\r
-        } else if (ocAccounts.length != 0) {\r
+        }\r
+        \r
+        if (defaultAccount == null && ocAccounts.length != 0) {\r
             // we at least need to take first account as fallback\r
             defaultAccount = ocAccounts[0];\r
         }\r
             // we at least need to take first account as fallback\r
             defaultAccount = ocAccounts[0];\r
         }\r
@@ -84,11 +86,26 @@ public class AccountUtils {
     }\r
     \r
     \r
     }\r
     \r
     \r
-    public static void setCurrentOwnCloudAccount(Context context, String name) {\r
-        SharedPreferences.Editor appPrefs = PreferenceManager\r
-                .getDefaultSharedPreferences(context).edit();\r
-        appPrefs.putString("select_oc_account", name);\r
-        appPrefs.commit();\r
+    public static boolean setCurrentOwnCloudAccount(Context context, String accountName) {\r
+        boolean result = false;\r
+        if (accountName != null) {\r
+            Account[] ocAccounts = AccountManager.get(context).getAccountsByType(\r
+                    AccountAuthenticator.ACCOUNT_TYPE);\r
+            boolean found = false;\r
+            for (Account account : ocAccounts) {\r
+                found = (account.name.equals(accountName));\r
+                if (found) {\r
+                    SharedPreferences.Editor appPrefs = PreferenceManager\r
+                            .getDefaultSharedPreferences(context).edit();\r
+                    appPrefs.putString("select_oc_account", accountName);\r
+    \r
+                    appPrefs.commit();\r
+                    result = true;\r
+                    break;\r
+                }\r
+            }\r
+        }\r
+        return result;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
index 05b5d33..bdaa16a 100644 (file)
@@ -143,10 +143,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         super.onCreate(savedInstanceState);\r
 \r
         /// Load of parameters from received intent\r
         super.onCreate(savedInstanceState);\r
 \r
         /// Load of parameters from received intent\r
-        mCurrentDir = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE); // no check necessary, mCurrenDir == null if the parameter is not in the intent\r
         Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT);\r
         Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT);\r
-        if (account != null)\r
-            AccountUtils.setCurrentOwnCloudAccount(this, account.name);\r
+        if (account != null && AccountUtils.setCurrentOwnCloudAccount(this, account.name)) {\r
+            mCurrentDir = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE); \r
+        }\r
         \r
         /// Load of saved instance state: keep this always before initDataFromCurrentAccount()\r
         if(savedInstanceState != null) {\r
         \r
         /// Load of saved instance state: keep this always before initDataFromCurrentAccount()\r
         if(savedInstanceState != null) {\r
@@ -187,7 +187,7 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         // Drop-down navigation \r
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
         OCFile currFile = mCurrentDir;\r
         // Drop-down navigation \r
         mDirectories = new CustomArrayAdapter<String>(this, R.layout.sherlock_spinner_dropdown_item);\r
         OCFile currFile = mCurrentDir;\r
-        while(currFile != null && currFile.getFileName() != OCFile.PATH_SEPARATOR) {\r
+        while(mStorageManager != null && currFile != null && currFile.getFileName() != OCFile.PATH_SEPARATOR) {\r
             mDirectories.add(currFile.getFileName());\r
             currFile = mStorageManager.getFileById(currFile.getParentId());\r
         }\r
             mDirectories.add(currFile.getFileName());\r
             currFile = mStorageManager.getFileById(currFile.getParentId());\r
         }\r