Android
Konten und AccountManager
Suche…
Benutzerdefinierte Konten / Authentifizierung
Das folgende Beispiel zeigt eine umfassende Abdeckung der Schlüsselkonzepte und des grundlegenden Skelettaufbaus: -
- Sammelt Anmeldeinformationen vom Benutzer (normalerweise über einen von Ihnen erstellten Anmeldebildschirm)
- Authentifiziert die Anmeldeinformationen beim Server (speichert benutzerdefinierte Authentifizierung)
- Speichert die Anmeldeinformationen auf dem Gerät
Erweitern eines AbstractAccountAuthenticator (wird hauptsächlich zum Abrufen der Authentifizierung und zum erneuten Authentifizieren verwendet)
public class AccountAuthenticator extends AbstractAccountAuthenticator {
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
String authTokenType, String[] requiredFeatures, Bundle options) {
//intent to start the login activity
}
@Override
public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options) {
}
@Override
public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
}
@Override
public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType,
Bundle options) throws NetworkErrorException {
//retrieve authentication tokens from account manager storage or custom storage or re-authenticate old tokens and return new ones
}
@Override
public String getAuthTokenLabel(String authTokenType) {
}
@Override
public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account, String[] features)
throws NetworkErrorException {
//check whether the account supports certain features
}
@Override
public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType,
Bundle options) {
//when the user's session has expired or requires their previously available credentials to be updated, here is the function to do it.
}
}
Erstellen Sie einen Dienst (das Account Manager-Framework stellt über die Dienstschnittstelle eine Verbindung zum erweiterten AbstractAccountAuthenticator her.)
public class AuthenticatorService extends Service {
private AccountAuthenticator authenticator;
@Override
public void onCreate(){
authenticator = new AccountAuthenticator(this);
}
@Override
public IBinder onBind(Intent intent) {
return authenticator.getIBinder();
}
}
Authenticator-XML-Konfiguration (Das Account Manager-Framework erfordert. Dies wird unter Einstellungen -> Konten in Android angezeigt.)
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="rename.with.your.applicationid"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:smallIcon="@drawable/app_icon" />
Änderungen an der AndroidManifest.xml (Bringen Sie alle oben genannten Konzepte zusammen, um sie programmgesteuert über den AccountManager nutzbar zu machen.)
<application
...>
<service
android:name=".authenticator.AccountAuthenticatorService"
android:exported="false"
android:process=":authentication">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator"/>
</service>
</application>
Das nächste Beispiel enthält Informationen zur Verwendung dieses Setups.