Pergunta

Estou procurando a resposta desde o início do dia e ainda não sei o que fazer! Para explicar o problema: Meu aplicativo usa GTasks API. Para fazer isso, o usuário DEVE ter uma conta do Google. Tenho duas maneiras de verificar isso:

  1. Eu instancio um gerente de conta e procuro por contas "com.google" se não houver tais contas
  2. Eu lanço um webview no qual o usuário faz login no Google e aceita usar a API.

Então, tenho que sincronizar meu aplicativo com GTask. A partir das informações extraídas do webview, tentei criar uma conta "com.google" usando o AccountManager, mas sempre recebo o erro "UID do chamador é diferente ...". Eu sei que o problema deve vir de "account-authenticator" porque o "accountType" tem que ser o mesmo no arquivo XML e no aplicativo, mas acho que não é o caso, porque quando eu uso um tipo de conta diferente, funciona perfeitamente (mas não consigo obter um authToken do GTask).

Então, aqui está o meu código:

Authenticator.xml:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="com.google"
    android:icon="@drawable/miniicon"
    android:smallIcon="@drawable/miniicon"
    android:label="@string/app_name"
    android:accountPreferences="@xml/preferences"
 />

Definição do tipo de conta:

 public class AuthenticationService extends Service {
     public static final String ACCOUNT_TYPE = "com.google";

Como eu o uso em minha aula:

 AccountManager manager = AccountManager.get(activity);

 final Account account = new Account(login, AuthenticationService.ACCOUNT_TYPE);
 manager.addAccountExplicitly(account, password, new Bundle());

Quando eu uso "com.plop" ou qualquer outra coisa em vez de "com.google", funciona muito bem.

Então, minhas duas perguntas são: 1. Posso usar o tipo de conta "com.google"? 2. É normal que eu não consiga obter meu authToken usando algo diferente de "com.google" (sabendo que a conta usada ainda é uma conta do Google, só não está configurada assim no Android)?

Obrigado antecipadamente pela sua ajuda e, por favor, me perdoe se a resposta estava no site!

Foi útil?

Solução

Eu respondi minha própria pergunta: isso não é possível da maneira que eu queria.Você deve usar a função "addAccount" usando um tipo de conta "com.google".Isso resultará no popping da atividade de criação de conta usada pelo sistema Android.Então, está tudo bem usando GTasks API.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top