Warum könnte AccountManager.addAccountExplicitlyly false zurückgeben?

Google Android-Dokumente ( http://developer.android.com/reference/android/accounts/AccountManager.html#addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle) ) sagen:

Kehrt zurück

True, wenn das Konto erfolgreich hinzugefügt wurde, false, wenn das Konto bereits vorhanden ist, ist das Konto null oder ein anderer Fehler tritt auf

Ich werde falsch. Speziell, welche anderen Fehler könnte dies verursachen?

  • Einige Fragen zur Genehmigung "USE_CREDENTIALS"
  • Synchronisieren Sie den Android-Client und den REST-Server
  • SyncAdapter ohne Konto
  • AccountManager fügt kein benutzerdefiniertes Konto in der Android N Vorschau hinzu
  • Stoppen Sie den Synchronisierungsadapter, um zunächst bei der Verwendung von addPeriodicSync zu synchronisieren
  • Warum führt ContentResolver.requestSync keine Synchronisierung aus?
  • ContentResolver.requestSync in Sync Adapter funktioniert nicht in Android
  • Wie kann ich die 'letzte sync' Zeit für ein Konto abrufen?
  • 3 Solutions collect form web for “Warum könnte AccountManager.addAccountExplicitlyly false zurückgeben?”

    false if the account already exists 

    Ohne irgendwelche Informationen zur Verfügung gestellt, könnte dies der Grund, dass Sie falsch werden

    AccountManagerService ist der eigentliche Systemdienst, der Konten verwaltet, während AccountManager nur ein Proxy ist, der alle gebundenen Services-bezogenen Sachen unter der Haube verbirgt.

    Der untenstehende Quellcode von addAccountInternal Methode von AccountManagerService ist ziemlich selbsterklärend, außer dass, wenn Sie null für account IllegalArgumentException wird IllegalArgumentException anstelle der Ausführung dieser Methode geworfen:

     private boolean addAccountInternal(UserAccounts accounts, Account account, String password, Bundle extras, boolean restricted, int callingUid) { if (account == null) { return false; } synchronized (accounts.cacheLock) { final SQLiteDatabase db = accounts.openHelper.getWritableDatabase(); db.beginTransaction(); try { long numMatches = DatabaseUtils.longForQuery(db, "select count(*) from " + TABLE_ACCOUNTS + " WHERE " + ACCOUNTS_NAME + "=? AND " + ACCOUNTS_TYPE+ "=?", new String[]{account.name, account.type}); if (numMatches > 0) { Log.w(TAG, "insertAccountIntoDatabase: " + account + ", skipping since the account already exists"); return false; } ContentValues values = new ContentValues(); values.put(ACCOUNTS_NAME, account.name); values.put(ACCOUNTS_TYPE, account.type); values.put(ACCOUNTS_PASSWORD, password); values.put(ACCOUNTS_LAST_AUTHENTICATE_TIME_EPOCH_MILLIS, System.currentTimeMillis()); long accountId = db.insert(TABLE_ACCOUNTS, ACCOUNTS_NAME, values); if (accountId < 0) { Log.w(TAG, "insertAccountIntoDatabase: " + account + ", skipping the DB insert failed"); return false; } if (extras != null) { for (String key : extras.keySet()) { final String value = extras.getString(key); if (insertExtraLocked(db, accountId, key, value) < 0) { Log.w(TAG, "insertAccountIntoDatabase: " + account + ", skipping since insertExtra failed for key " + key); return false; } } } db.setTransactionSuccessful(); logRecord(db, DebugDbHelper.ACTION_ACCOUNT_ADD, TABLE_ACCOUNTS, accountId, accounts, callingUid); insertAccountIntoCacheLocked(accounts, account); } finally { db.endTransaction(); } sendAccountsChangedBroadcast(accounts.userId); } if (accounts.userId == UserHandle.USER_OWNER) { addAccountToLimitedUsers(account); } return true; } 

    Bottom line: addAccountExplicitly wird false wenn entweder das erforderliche Konto bereits vorhanden ist oder ein SQLite-Datenbankfehler die Speicherung von addAccountExplicitly Informationen in der Datenbank verhindert hat.

    Stellen Sie sicher, dass Sie mit dem Internet verbunden sind ! In meinem Fall war das das Problem!

     if (accountManager.addAccountExplicitly(_account, null, null)) { System.out.println("_add account if"); }else { // This block is also executed in case device has no internet connection } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.