2011-12-06 1 views
2

私は一日の始まりから答えを探していますが、私はまだ何をすべきかわかりません! 問題を説明するには 私のアプリケーションはGTasks APIを使用しています。これを行うには、ユーザーはGoogleアカウントを持っていなければなりません。私はそれをチェックするには、2つの方法があります。Android addAccount明示的に「com.google」タイプを使用しています

  1. を私はアカウントマネージャをインスタンス化し、そのようなアカウントがない場合
  2. 「com.google」のアカウントを探して、私はGoogleでユーザーがログオンするのWebViewを起動し、受け入れAPIを使用する

次に、アプリケーションをGTaskと同期させる必要があります。 webviewから抽出した情報から、AccountManagerを使用して「com.google」アカウントを作成しようとしましたが、「Caller UID is different ...」というエラーが常に表示されます。私は問題は "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」の代わりにanaythingを実行すると、本当にうまく動作します。

私の2つの質問は次のとおりです。 1. "com.google"アカウントタイプを使用できますか? 2.「com.google」以外のものを使用してauthTokenを取得できないのは正常ですか(使用しているアカウントはまだGoogleアカウントであり、Androidのように設定されていません)。

あなたの助けを借りて、Thxが事前に回答していれば、その答えがサイトにあったら私を許してください!

答えて

2

私は私自身の質問に答えました。それは私が望むようにはできませんでした。 「com.google」アカウントタイプを使用して「addAccount」機能を使用する必要があります。これにより、アンドロイドシステムで使用されるアカウント作成アクティビティがポップされます。その後、GTasks APIを使用してすべてが正常です。

関連する問題