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

  • Android API-23: InetAddressUtils Ersatz
  • TextView setTextColor () funktioniert nicht
  • Wie sichere String in Android-Anwendung zu sichern?
  • Drawable => Graustufen
  • Android Play Games: Custom Room Konfiguration mit flexiblen Spielern
  • Android Facebook SDK: Key Hash entspricht keine gespeicherten Key Hashes beim Hochladen von Google Play
  • 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?

  • FindViewById vs lokaler Verweis in Aktivität
  • Wie man Navigation Schublade und Spinner kombiniert
  • Abstand in der benutzerdefinierten Tastatur
  • Wie kann ich die facebook post create_time in die Zeitzone des Nutzers umwandeln?
  • FastScroller blättert nur zum ersten Element zurück, nicht zur Kopfzeile
  • Nachtmodus für Google Maps?
  • 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.