Android addAccount явно с использованием типа "com.google" - PullRequest
3 голосов
/ 06 декабря 2011

Я ищу ответ с самого начала дня и до сих пор не знаю, что делать! Чтобы объяснить проблему: Мое приложение использует GTasks API. Для этого пользователь ДОЛЖЕН иметь учетную запись Google. У меня есть два способа проверить это:

  1. Я создаю экземпляр менеджера аккаунтов и ищу аккаунты "com.google", если таких аккаунтов нет
  2. Я запускаю веб-просмотр, в котором пользователь входит в Google и соглашается использовать API.

Затем я должен синхронизировать свое приложение с GTask. Из информации, полученной из веб-просмотра, я попытался создать учетную запись «com.google» с помощью AccountManager, но у меня всегда появляется ошибка «UID вызывающего абонента отличается ...». Я знаю, что проблема должна исходить от «account-authenticator», потому что «accountType» должен быть одинаковым в файле XML и в приложении, но я думаю, что это не так, потому что когда я использую другой тип учетной записи, он отлично работает (но я не могу получить authToken от GTask).

Итак, вот мой код:

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

Определение типа счета:

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

Как я использую это в моем классе:

 AccountManager manager = AccountManager.get(activity);

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

Когда я использую "com.plop" или что-то еще вместо "com.google", он работает очень хорошо.

Итак, два моих вопроса: 1. Могу ли я использовать тип учетной записи "com.google"? 2. Это нормально, что я не могу получить свой authToken с помощью чего-то другого, кроме "com.google" (зная, что используемая учетная запись все еще является учетной записью Google, она просто не настроена на Android)

Заранее спасибо за помощь и, пожалуйста, прости меня, если ответ был на сайте!

1 Ответ

2 голосов
/ 23 декабря 2011

Я ответил на свой вопрос: это невозможно, так, как я хотел. Вы должны использовать функцию «addAccount», используя тип учетной записи «com.google». Это приведет к прекращению действия по созданию учетной записи, используемой системой Android. Тогда все в порядке, используя GTasks API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...