فهرست منبع

Fix exit of the app after not creating account from 'Add account' in navigation drawer

David A. Velasco 8 سال پیش
والد
کامیت
d504a055aa

+ 19 - 5
src/com/owncloud/android/ui/activity/BaseActivity.java

@@ -116,7 +116,7 @@ public abstract class BaseActivity extends AppCompatActivity {
         Account newAccount = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
         if (newAccount == null) {
             /// no account available: force account creation
-            createAccount();
+            createAccount(true);
             mRedirectingToSetupAccount = true;
             mAccountWasSet = false;
             mAccountWasRestored = false;
@@ -129,16 +129,19 @@ public abstract class BaseActivity extends AppCompatActivity {
     }
 
     /**
-     * Launches the account creation activity. To use when no ownCloud account is available.
+     * Launches the account creation activity.
+     *
+     * @param mandatoryCreation     When 'true', if an account is not created by the user, the app will be closed.
+     *                              To use when no ownCloud account is available.
      */
-    protected void createAccount() {
+    protected void createAccount(boolean mandatoryCreation) {
         AccountManager am = AccountManager.get(getApplicationContext());
         am.addAccount(MainApp.getAccountType(),
                 null,
                 null,
                 null,
                 this,
-                new AccountCreationCallback(),
+                new AccountCreationCallback(mandatoryCreation),
                 new Handler());
     }
 
@@ -216,6 +219,17 @@ public abstract class BaseActivity extends AppCompatActivity {
      */
     public class AccountCreationCallback implements AccountManagerCallback<Bundle> {
 
+        boolean mMandatoryCreation;
+
+        /**
+         * Constuctor
+         *
+         * @param mandatoryCreation     When 'true', if an account was not created, the app is closed.
+         */
+        public AccountCreationCallback(boolean mandatoryCreation) {
+            mMandatoryCreation = mandatoryCreation;
+        }
+
         @Override
         public void run(AccountManagerFuture<Bundle> future) {
             BaseActivity.this.mRedirectingToSetupAccount = false;
@@ -242,7 +256,7 @@ public abstract class BaseActivity extends AppCompatActivity {
             } else {
                 Log_OC.e(TAG, "Account creation callback with null bundle");
             }
-            if (!accountWasSet) {
+            if (mMandatoryCreation && !accountWasSet) {
                 moveTaskToBack(true);
             }
         }

+ 1 - 1
src/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -277,7 +277,7 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
                                 startActivity(participateIntent);
                                 break;
                             case R.id.drawer_menu_account_add:
-                                createAccount();
+                                createAccount(false);
                                 break;
                             case R.id.drawer_menu_account_manage:
                                 Intent manageAccountsIntent = new Intent(getApplicationContext(),