Reviewed integration with sychronization framework to fix problems in Android 4.4
[pub/Android/ownCloud.git] / src / com / owncloud / android / authentication / AccountAuthenticator.java
index 2a43dab..ff0782d 100644 (file)
 
 package com.owncloud.android.authentication;
 
 
 package com.owncloud.android.authentication;
 
+import com.owncloud.android.Log_OC;
+import com.owncloud.android.MainApp;
+import com.owncloud.android.R;
+
 import android.accounts.*;
 import android.content.Context;
 import android.content.Intent;
 import android.accounts.*;
 import android.content.Context;
 import android.content.Intent;
@@ -25,8 +29,8 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.widget.Toast;
 
 import android.os.Handler;
 import android.widget.Toast;
 
-import com.owncloud.android.Log_OC;
-import com.owncloud.android.R;
+
+
 
 /**
  *  Authenticator for ownCloud accounts.
 
 /**
  *  Authenticator for ownCloud accounts.
@@ -44,14 +48,6 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
      * Is used by android system to assign accounts to authenticators. Should be
      * used by application and all extensions.
      */
      * Is used by android system to assign accounts to authenticators. Should be
      * used by application and all extensions.
      */
-    public static final String ACCOUNT_TYPE = "owncloud";
-    public static final String AUTHORITY = "org.owncloud";
-    public static final String AUTH_TOKEN_TYPE = "org.owncloud";
-    public static final String AUTH_TOKEN_TYPE_PASSWORD = "owncloud.password";
-    public static final String AUTH_TOKEN_TYPE_ACCESS_TOKEN = "owncloud.oauth2.access_token";
-    public static final String AUTH_TOKEN_TYPE_REFRESH_TOKEN = "owncloud.oauth2.refresh_token";
-    public static final String AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE = "owncloud.saml.web_sso.session_cookie";
-
     public static final String KEY_AUTH_TOKEN_TYPE = "authTokenType";
     public static final String KEY_REQUIRED_FEATURES = "requiredFeatures";
     public static final String KEY_LOGIN_OPTIONS = "loginOptions";
     public static final String KEY_AUTH_TOKEN_TYPE = "authTokenType";
     public static final String KEY_REQUIRED_FEATURES = "requiredFeatures";
     public static final String KEY_LOGIN_OPTIONS = "loginOptions";
@@ -111,7 +107,7 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
         final Bundle bundle = new Bundle();
         
         AccountManager accountManager = AccountManager.get(mContext);
         final Bundle bundle = new Bundle();
         
         AccountManager accountManager = AccountManager.get(mContext);
-        Account[] accounts = accountManager.getAccountsByType(ACCOUNT_TYPE);
+        Account[] accounts = accountManager.getAccountsByType(MainApp.getAccountType());
         
         if (mContext.getResources().getBoolean(R.bool.multiaccount_support) || accounts.length < 1) {
             try {
         
         if (mContext.getResources().getBoolean(R.bool.multiaccount_support) || accounts.length < 1) {
             try {
@@ -138,13 +134,14 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
 
             // Return an error
             bundle.putInt(AccountManager.KEY_ERROR_CODE, AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION);
 
             // 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));
+            final String message = String.format(mContext.getString(R.string.auth_unsupported_multiaccount), mContext.getString(R.string.app_name)); 
+            bundle.putString(AccountManager.KEY_ERROR_MESSAGE, message);
            
             mHandler.post(new Runnable() {
 
                 @Override
                 public void run() {
            
             mHandler.post(new Runnable() {
 
                 @Override
                 public void run() {
-                    Toast.makeText(mContext, R.string.auth_unsupported_multiaccount, Toast.LENGTH_SHORT).show();
+                    Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
                 }
             });
             
                 }
             });
             
@@ -207,7 +204,7 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
         /// check if required token is stored
         final AccountManager am = AccountManager.get(mContext);
         String accessToken;
         /// check if required token is stored
         final AccountManager am = AccountManager.get(mContext);
         String accessToken;
-        if (authTokenType.equals(AUTH_TOKEN_TYPE_PASSWORD)) {
+        if (authTokenType.equals(MainApp.getAuthTokenTypePass())) {
             accessToken = am.getPassword(account);
         } else {
             accessToken = am.peekAuthToken(account, authTokenType);
             accessToken = am.getPassword(account);
         } else {
             accessToken = am.peekAuthToken(account, authTokenType);
@@ -215,7 +212,7 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
         if (accessToken != null) {
             final Bundle result = new Bundle();
             result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
         if (accessToken != null) {
             final Bundle result = new Bundle();
             result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
-            result.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE);
+            result.putString(AccountManager.KEY_ACCOUNT_TYPE, MainApp.getAccountType());
             result.putString(AccountManager.KEY_AUTHTOKEN, accessToken);
             return result;
         }
             result.putString(AccountManager.KEY_AUTHTOKEN, accessToken);
             return result;
         }
@@ -280,18 +277,18 @@ public class AccountAuthenticator extends AbstractAccountAuthenticator {
 
     private void validateAccountType(String type)
             throws UnsupportedAccountTypeException {
 
     private void validateAccountType(String type)
             throws UnsupportedAccountTypeException {
-        if (!type.equals(ACCOUNT_TYPE)) {
+        if (!type.equals(MainApp.getAccountType())) {
             throw new UnsupportedAccountTypeException();
         }
     }
 
     private void validateAuthTokenType(String authTokenType)\r
             throws UnsupportedAuthTokenTypeException {\r
             throw new UnsupportedAccountTypeException();
         }
     }
 
     private void validateAuthTokenType(String authTokenType)\r
             throws UnsupportedAuthTokenTypeException {\r
-        if (!authTokenType.equals(AUTH_TOKEN_TYPE) &&\r
-            !authTokenType.equals(AUTH_TOKEN_TYPE_PASSWORD) &&\r
-            !authTokenType.equals(AUTH_TOKEN_TYPE_ACCESS_TOKEN) &&\r
-            !authTokenType.equals(AUTH_TOKEN_TYPE_REFRESH_TOKEN) &&
-            !authTokenType.equals(AUTH_TOKEN_TYPE_SAML_WEB_SSO_SESSION_COOKIE)) {\r
+        if (!authTokenType.equals(MainApp.getAuthTokenType()) &&\r
+            !authTokenType.equals(MainApp.getAuthTokenTypePass()) &&\r
+            !authTokenType.equals(MainApp.getAuthTokenTypeAccessToken()) &&\r
+            !authTokenType.equals(MainApp.getAuthTokenTypeRefreshToken()) &&
+            !authTokenType.equals(MainApp.getAuthTokenTypeSamlSessionCookie())) {\r
             throw new UnsupportedAuthTokenTypeException();\r
         }\r
     }\r
             throw new UnsupportedAuthTokenTypeException();\r
         }\r
     }\r