From: David A. Velasco Date: Fri, 31 Oct 2014 14:08:08 +0000 (+0100) Subject: Fixed crash and remembered location when there are multiple accounts X-Git-Tag: oc-android-1.7.0_signed~119^2~2^2~1 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/dbd981f0121f0e199ea9713c38e736c3f78f838c?ds=sidebyside;hp=--cc Fixed crash and remembered location when there are multiple accounts --- dbd981f0121f0e199ea9713c38e736c3f78f838c diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index cdbcb97b..bace7c7f 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -125,31 +125,13 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene Log_OC.i(TAG, "More then one ownCloud is available"); showDialog(DIALOG_MULTIPLE_ACCOUNT); } else { - - mAccount = accounts[0]; - mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); - - SharedPreferences appPreferences = PreferenceManager - .getDefaultSharedPreferences(getApplicationContext()); - - String last_path = appPreferences.getString("last_upload_path", ""); - // "/" equals root-directory - if(last_path.equals("/")) { - mParents.add(""); - } - else{ - String[] dir_names = last_path.split("/"); - for (String dir : dir_names) - mParents.add(dir); - } - //Make sure that path still exists, if it doesn't pop the stack and try the previous path - while(!mStorageManager.fileExists(generatePath(mParents))){ - mParents.pop(); - } + mAccount = accounts[0]; + mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); + initTargetFolder(); + populateDirectoryList(); + } - populateDirectoryList(); - } else { showDialog(DIALOG_NO_STREAM); } @@ -211,6 +193,7 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene public void onClick(DialogInterface dialog, int which) { mAccount = mAccountManager.getAccountsByType(MainApp.getAccountType())[which]; mStorageManager = new FileDataStorageManager(mAccount, getContentResolver()); + initTargetFolder(); populateDirectoryList(); } }); @@ -479,5 +462,36 @@ public class Uploader extends SherlockListActivity implements OnItemClickListene Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } } + + /** + * Loads the target folder initialize shown to the user. + * + * The target account has to be chosen before this method is called. + */ + private void initTargetFolder() { + if (mStorageManager == null) { + throw new IllegalStateException("Do not call this method before initializing mStorageManager"); + } + + SharedPreferences appPreferences = PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()); + + String last_path = appPreferences.getString("last_upload_path", ""); + // "/" equals root-directory + if(last_path.equals("/")) { + mParents.add(""); + } + else{ + String[] dir_names = last_path.split("/"); + for (String dir : dir_names) + mParents.add(dir); + } + //Make sure that path still exists, if it doesn't pop the stack and try the previous path + while(!mStorageManager.fileExists(generatePath(mParents))){ + mParents.pop(); + } + } + + }