Domanda

Sto cercando la risposta dall'inizio della giornata e ancora non so cosa fare! Per spiegare il problema: La mia applicazione utilizza l'API GTasks. Per fare ciò, l'utente DEVE avere un account Google. Ho due modi per verificarlo:

  1. Istanzio un gestore account e cerco account "com.google" se non sono presenti account di questo tipo
  2. Avvio una visualizzazione web su cui l'utente accede a Google e accetta di utilizzare l'API.

Quindi, devo sincronizzare la mia applicazione con GTask. Dalle informazioni estratte dalla webview, ho provato a creare un account "com.google" utilizzando AccountManager ma ricevo sempre l'errore "Caller UID is different ...". So che il problema dovrebbe derivare da "account-authenticator" perché "accountType" deve essere lo stesso nel file XML e nell'app ma penso che non sia così perché quando utilizzo un tipo di account diverso, funziona perfettamente (ma non riesco a ottenere un authToken da GTask).

Quindi, ecco il mio codice:

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"
 />

Definizione del tipo di account:

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

Come lo uso nella mia classe:

 AccountManager manager = AccountManager.get(activity);

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

Quando utilizzo "com.plop" o qualsiasi altra cosa invece di "com.google", funziona molto bene.

Quindi, le mie due domande sono: 1. Posso utilizzare il tipo di account "com.google"? 2. È normale che non riesca a ottenere il mio authToken utilizzando qualcos'altro oltre a "com.google" (sapendo che l'account utilizzato è ancora un account Google, semplicemente non è impostato così su Android)?

Grazie in anticipo per il tuo aiuto e, per favore, perdonami se la risposta era sul sito!

È stato utile?

Soluzione

Ho risposto alla mia stessa domanda: non è possibile nel modo in cui volevo.Devi utilizzare la funzione "addAccount" utilizzando un tipo di account "com.google".Ciò comporterà lo scoppio dell'attività di creazione dell'account utilizzata dal sistema Android.Quindi, tutto va bene usando l'API GTasks.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top