+
+ public void onAuthenticationResult(boolean result, String message) {
+ if (result) {
+ TextView username_text = (TextView) findViewById(R.id.account_username),
+ password_text = (TextView) findViewById(R.id.account_password);
+
+ URL url;
+ try {
+ url = new URL(message);
+ } catch (MalformedURLException e) {
+ // should never happend
+ Log.e(getClass().getName(), "Malformed URL: " + message);
+ return;
+ }
+
+ String username = username_text.getText().toString().trim();
+ Account account = new Account(username + "@" + url.getHost(), AccountAuthenticator.ACCOUNT_TYPE);
+ AccountManager accManager = AccountManager.get(this);
+ accManager.addAccountExplicitly(account, password_text.getText().toString(), null);
+
+ final Intent intent = new Intent();
+ intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, AccountAuthenticator.ACCOUNT_TYPE);
+ intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);
+ intent.putExtra(AccountManager.KEY_AUTHTOKEN, AccountAuthenticator.ACCOUNT_TYPE);
+ accManager.setUserData(account, AccountAuthenticator.KEY_OC_URL, url.toString());
+
+ // TODO prepare this URL during a central service
+ intent.putExtra(AccountManager.KEY_USERDATA, username);
+ accManager.setUserData(account, AccountAuthenticator.KEY_CONTACT_URL,
+ url.toString().replace(AuthUtils.WEBDAV_PATH_2_0, AuthUtils.CARDDAV_PATH_2_0)
+ );
+
+ setAccountAuthenticatorResult(intent.getExtras());
+ setResult(RESULT_OK, intent);
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+ getContentResolver().startSync(ProviderTableMeta.CONTENT_URI, bundle);
+
+ dismissDialog(0);
+ finish();
+ } else {
+ Toast.makeText(this, message, Toast.LENGTH_LONG).show();
+ dismissDialog(0);
+ }