Я пытаюсь получить authToken
для учетной записи, но получаю эту ошибку:
java.lang.IllegalStateException: calling this from your main thread can lead to deadlock
Вот как я получаю AuthToken:
public class MyAccount {
private final Account account;
private final AccountManager manager;
private final Context context;
public MyAccount (Context context) {
this.context = context;
final Account[] accounts = AccountManager.get(context).getAccountsByType("com.myapp");
account = accounts.length > 0 ? accounts[0] : null;
manager = AccountManager.get(context);
}
public String getAuthToken() {
@SuppressWarnings("deprecation")
AccountManagerFuture<Bundle> future = manager.getAuthToken(account,"com.myapp", false, null, null);
try {
//GETTING EXCEPTION HERE
Bundle result = future.getResult();
return result != null ? result.getString(KEY_AUTHTOKEN) : null;
} catch (AccountsException e) {
Log.e(TAG, "Auth token lookup failed", e);
return null;
} catch (IOException e) {
Log.e(TAG, "Auth token lookup failed", e);
return null;
}
}
}
Я вызываю это из своей MainActivity следующим образом:
MyAccount account = new MyAccount(getApplicationContext());
String authtoken = account.getAuthToken());
Вопрос
Как я могу вызвать MyAccount
, чтобы получить authToken и избавиться от исключения?