# AccountManager intigrieren



## eiskaltereistee (28. Nov 2015)

Hallo,

ich möchte in meine APP den AccountManager von Android intigrieren.

Meine APP ist wiefolgt aufgebaut:

-> Login Activity -> Weitere Aktionen

In der Login Activity habe ich 3 Elemente: E-Mail, Passwort, Button für den Login.

Das Login ist bereits vollständig intigriert (Abfrage mit meinem Server etc). Nun müsste ich den AccountManager einbauen. Dabei habe ich noch Probleme!

Mein Code, der den Account hinzufügen soll:


Spoiler: Account add code





```
public static final String PARAM_CREATE = "create";
    public static final String PARAM_AUTHTOKEN_TYPE = "auth.token";
    public static final String KEY_ACCOUNT_NAME = "authAccount";
    public static final String KEY_ACCOUNT_TYPE = "accountType";
    public static final String KEY_AUTHTOKEN = "authtoken";
```



```
String accountType = getIntent().getStringExtra(PARAM_AUTHTOKEN_TYPE);
                final Account account = new Account(emailText, "auth.token");
                mAccountManager.addAccountExplicitly(account, passwordText,null);

                final Intent intent = new Intent();
                intent.putExtra(LoginView.KEY_ACCOUNT_NAME, emailText);
                intent.putExtra(LoginView.KEY_ACCOUNT_TYPE, accountType);
                intent.putExtra(LoginView.KEY_AUTHTOKEN, accountType);

                setAccountAuthenticatorResult(intent.getExtras());
                setResult(1, intent);
```





Dabei erhalte ich folgende Fehlermeldung: 
	
	
	
	





```
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.accounts.AccountManager.addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle)' on a null object reference
```

Ich gehe davon aus, dass bei dem 3. Parameter (Wo laut diesem Artikel  ein Bundel userdata erwartet wird) nicht null gegeben werden darf. Doch wie baue ich diesen Bundel? Wie muss der aussehen? Hätte da mal jemand ein Beispiel?

Desweiteren verstehe ich noch nicht ganz genau wie das Funktionieren soll: 
-> Der AccountManager speichert die Logindaten nach dem erfolgreichen Login (Das ist ja das, was mein Code bisher können sollte)

Nun möchte ich ja aber das wenn ich die APP wieder starte, das der user keine Logindaten eingeben muss. Wie funktioniert das dann? Wie komme ich wieder an diese Daten?
Ist das so, dass ich E-Mail und Passwort wieder auslesen kann um diese einfach in das EditText einzufügen?

Ich würde mich sehr freuen wenn ihr mir helfen könnt. Ich habe bereits viele Tutorials gelesen aber ich verstehe das ganze noch nicht genau. Ich bin zwar der englischen Sprache mächtig, allerdings auch kein Profi. Vielleicht verstehe ich bei den Englischen Tutorials etwas falsch? 

Ich habe mich jetzt daran gehalten: https://www.finalconcept.com.au/article/view/android-account-manager-step-by-step-2 und zwischendurch in die Android Dokumenation geschaut.

Vielen Dank im vorraus!


----------



## buggy84 (30. Nov 2015)

Ein kleiner Tipp vorweg:

Wenn man Quelltext abmalt, dann darf man manchmal nicht einfach Sachen weglassen, nur weil man sie eventuell nicht versteht.

Zu deinem Problem: Ich vermute stark, dass dein


```
mAccountManager
```

null ist. Hast Du das mal geprüft? Deine Fehlermeldung sagt Dir, dass du eine Methode auf eine null-referenz aufrufen willst. Das ist wie wenn Du ein Auto tanken willst, das reell gar nicht existiert.


----------

