mirror of
https://github.com/nextcloud/android.git
synced 2024-11-26 23:28:42 +03:00
Merge branch 'setup_multiaccount' into setup_app_name
Conflicts: res/values/setup.xml src/com/owncloud/android/authentication/AccountAuthenticator.java
This commit is contained in:
commit
31f6e61f89
5 changed files with 61 additions and 20 deletions
|
@ -22,4 +22,7 @@
|
|||
<color name="actionbar_start_color">#1D2D44</color>
|
||||
<color name="actionbar_end_color">#1D2D44</color>
|
||||
|
||||
<!-- Multiaccount support -->
|
||||
<bool name="multiaccount_support">true</bool>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -216,6 +216,7 @@
|
|||
<string name="auth_connecting_auth_server">Connecting to authentication server…</string>
|
||||
<string name="auth_follow_auth_server">Follow instructions above to get authenticated</string>
|
||||
<string name="auth_unsupported_auth_method">The server does not support this authentication method</string>
|
||||
<string name="auth_unsupported_multiaccount">This version of ownCloud doesn\'t support multiaccount</string>
|
||||
|
||||
<string name="crashlog_message">Application terminated unexpectedly. Would you like to submit a crash report?</string>
|
||||
<string name="crashlog_send_report">Send report</string>
|
||||
|
|
|
@ -22,9 +22,15 @@ import android.accounts.*;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.owncloud.android.Log_OC;
|
||||
import com.owncloud.android.MainApp;
|
||||
|
||||
import com.owncloud.android.R;
|
||||
|
||||
|
||||
/**
|
||||
* Authenticator for ownCloud accounts.
|
||||
*
|
||||
|
@ -86,10 +92,13 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
|
|||
private static final String TAG = AccountAuthenticator.class.getSimpleName();
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private Handler mHandler;
|
||||
|
||||
public AccountAuthenticator(Context context) {
|
||||
super(context);
|
||||
mContext = context;
|
||||
mHandler = new Handler();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -102,25 +111,49 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
|
|||
throws NetworkErrorException {
|
||||
Log_OC.i(TAG, "Adding account with type " + accountType
|
||||
+ " and auth token " + authTokenType);
|
||||
try {
|
||||
validateAccountType(accountType);
|
||||
} catch (AuthenticatorException e) {
|
||||
Log_OC.e(TAG, "Failed to validate account type " + accountType + ": "
|
||||
+ e.getMessage());
|
||||
e.printStackTrace();
|
||||
return e.getFailureBundle();
|
||||
}
|
||||
final Intent intent = new Intent(mContext, AuthenticatorActivity.class);
|
||||
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
|
||||
intent.putExtra(KEY_AUTH_TOKEN_TYPE, authTokenType);
|
||||
intent.putExtra(KEY_REQUIRED_FEATURES, requiredFeatures);
|
||||
intent.putExtra(KEY_LOGIN_OPTIONS, options);
|
||||
intent.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_CREATE);
|
||||
|
||||
setIntentFlags(intent);
|
||||
|
||||
final Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
|
||||
|
||||
AccountManager accountManager = AccountManager.get(mContext);
|
||||
Account[] accounts = accountManager.getAccountsByType(MainApp.getAccountType());
|
||||
|
||||
if (mContext.getResources().getBoolean(R.bool.multiaccount_support) || accounts.length < 1) {
|
||||
try {
|
||||
validateAccountType(accountType);
|
||||
} catch (AuthenticatorException e) {
|
||||
Log_OC.e(TAG, "Failed to validate account type " + accountType + ": "
|
||||
+ e.getMessage());
|
||||
e.printStackTrace();
|
||||
return e.getFailureBundle();
|
||||
}
|
||||
|
||||
final Intent intent = new Intent(mContext, AuthenticatorActivity.class);
|
||||
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
|
||||
intent.putExtra(KEY_AUTH_TOKEN_TYPE, authTokenType);
|
||||
intent.putExtra(KEY_REQUIRED_FEATURES, requiredFeatures);
|
||||
intent.putExtra(KEY_LOGIN_OPTIONS, options);
|
||||
intent.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_CREATE);
|
||||
|
||||
setIntentFlags(intent);
|
||||
|
||||
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
|
||||
|
||||
} else {
|
||||
|
||||
// Return an error
|
||||
bundle.putInt(AccountManager.KEY_ERROR_CODE, AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION);
|
||||
bundle.putString(AccountManager.KEY_ERROR_MESSAGE, mContext.getString(R.string.auth_unsupported_multiaccount));
|
||||
|
||||
mHandler.post(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Toast.makeText(mContext, R.string.auth_unsupported_multiaccount, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return bundle;
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ import android.widget.CheckBox;
|
|||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TextView.OnEditorActionListener;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.actionbarsherlock.app.SherlockDialogFragment;
|
||||
import com.owncloud.android.Log_OC;
|
||||
|
|
|
@ -111,8 +111,11 @@ public class AccountSelectActivity extends SherlockListActivity implements
|
|||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getSherlock().getMenuInflater();
|
||||
inflater.inflate(R.menu.account_picker, menu);
|
||||
// Show Create Account if Multiaccount is enabled
|
||||
if (getResources().getBoolean(R.bool.multiaccount_support)) {
|
||||
MenuInflater inflater = getSherlock().getMenuInflater();
|
||||
inflater.inflate(R.menu.account_picker, menu);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -147,7 +150,6 @@ public class AccountSelectActivity extends SherlockListActivity implements
|
|||
this,
|
||||
null,
|
||||
null);
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -212,6 +214,7 @@ public class AccountSelectActivity extends SherlockListActivity implements
|
|||
android.R.layout.simple_list_item_single_choice,
|
||||
new String[] { "NAME" }, new int[] { android.R.id.text1 }));
|
||||
registerForContextMenu(getListView());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue