alle.Asynchrone Kontoauthentifizierung mit Volley
Ich bin ein Konto Authenticator mit AbstractAccountAuthenticator implementieren und ich muss eine asynchrone Methode in der Funktion getAuthToken aufrufen, um einen Benutzer zu authentifizieren. Mein Code ist wie folgt:
public class AccountAuthenticator extends AbstractAccountAuthenticator {
...
@Override
public Bundle getAuthToken(final AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options)
throws NetworkErrorException
{
final AccountManager accountManager = AccountManager.get(context);
String authToken = accountManager.peekAuthToken(account, authTokenType);
// !!!!
if(TextUtils.isEmpty(authToken)) {
<<call asynchronous method to acquire token>>
return null;
}
// !!!!
final Bundle result = new Bundle();
result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
result.putString(AccountManager.KEY_AUTHTOKEN, authToken);
return result;
}
...
}
Laut Google in der Dokumentation für die ‚getAuthToken‘ Methode: es gibt ein Bündel Ergebnis oder null, wenn das Ergebnis über die Reaktion zurückgeführt werden soll. Das Ergebnis enthält entweder:
• AccountManager.KEY_INTENT
oder
• AccountManager.KEY_ACCOUNT_NAME
, AccountManager.KEY_ACCOUNT_TYPE
und AccountManager.KEY_AUTHTOKEN
oder
• AccountManager.KEY_ERROR_CODE
und AccountManager.KEY_ERROR_MESSAGE
einen Fehler
, um anzuzeigen, Und ich brauche null zurück, weil die Authenticator Methode ist asynchron, aber wie gebe ich das Bundle über den Parameter 'response' gemäß der Dokumentation zurück?
Danke für alle, und Entschuldigung mein Englisch.
danke, aber zurück Null und OnResponse laufen über verschiedene Threads !!!! – SanatiSharif
@SanatiSharif Kein Problem! Das Argument "Antwort" ist der Typ von dir, der deine Antwort zurückgibt. Es wird wirklich dafür verwendet, wenn Ihre Methode nicht sofort zurückkehren kann. Siehe zum Beispiel die Zeilen: 'response.onResult (result)'; und 'response.onError (result);' – Luciano