Android addAccount明显使用“com.google”类型

时间:2011-12-06 15:14:57

标签: android authentication accountmanager authenticator

我从一开始就在寻找答案,我仍然不知道该怎么做! 解释问题: 我的应用程序使用GTasks API。要做到这一点,用户必须有一个谷歌帐户。我有两种方法可以检查:

  1. 如果没有此类帐户,我会实例化一个客户经理并查找“com.google”帐户
  2. 我启动了一个webview,用户登录Google并接受使用该API。
  3. 然后,我必须将我的应用程序与GTask同步。 根据从webview中提取的信息,我尝试使用AccountManager创建一个“com.google”帐户,但我总是有错误“来电者UID不同......”。我知道问题应该来自“account-authenticator”,因为“accountType”必须在XML文件和应用程序中相同,但我认为情况并非如此,因为当我使用不同的帐户类型时,它完全有效(但我无法从GTask获得authToken)。

    所以,这是我的代码:

    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.使用“com.google”以外的其他内容无法获取我的authToken这是正常的(知道所使用的帐户仍然是Google帐户,它只是在Android上没有这样设置)?

    请提前获取您的帮助,如果答案在网站上,请原谅我!

1 个答案:

答案 0 :(得分:2)

我回答了自己的问题:这不可能是我想要的方式。您必须使用“com.google”帐户类型使用“addAccount”功能。这将导致弹出android系统使用的帐户创建活动。然后,使用GTasks API一切都很好。