2015-08-15 3 views
1

Я пытаюсь определить, добавил ли пользователь учетную запись, чтобы предотвратить добавление одной и той же учетной записи несколько раз в мое приложение. Я использую свою собственную аутентификацию учетной записи. Вот мой код:Проверьте, зарегистрирована ли учетная запись в AccountManager

public class AuthenticatorActivity extends AccountAuthenticatorActivity { 



    private AccountManager mAccountManager; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.setup_mail_dialog); 
     mAccountManager = AccountManager.get(getBaseContext()); 


     findViewById(R.id.bSetupConfirm).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkAccount(); 

      } 
     }); 

    } 


    private void checkAccount() { 
     mAccountManager = AccountManager.get(getBaseContext()); 
     String accountName = ((EditText) findViewById(R.id.etSetupEmail)).getText().toString().trim(); 
     Account[] accounts = mAccountManager.getAccountsByType(getResources().getString(R.string.account_type)); 
     for(Account account : accounts) { 
      if(account.name == accountName) { 
       System.out.println("Account exists"); 
       return; 
      }else{ 
       System.out.println("Account do not exists"); 
       return; 
      } 
     } 

    } 

Однако, даже если учетная запись существует приложение всегда показывать «Счет не существует».

+0

вы проверили 'mAccountManager.getAccounts()', чтобы увидеть, если учетная запись на самом деле там? Если это так, это правильный тип? – Victory

+0

Да, уже проверены и есть учетные записи. – TheGMX

+0

Важно отметить, что вы собираетесь проверить только первый, цикл остановится после одного сравнения, так как в обоих утверждениях есть возврат. – Adi

ответ

2

По ссылкам вы должны сравнить их с равными.

Решение:

if(account.name.equals(accountName)) 
+0

Спасибо, вы решили проблему! – TheGMX