16

Android を使用してWeb サービスAccountManagerとアプリケーション (連絡先とカレンダーの標準同期) を同期したいのですAccountManagerが、ユーザー名とパスワードしか保存していないようです。私の Web サービスは、ユーザー名、パスワード、およびアカウントの 3 つの資格情報を取得します。3 番目の情報を保存するためのベスト プラクティスは何ですか?

4

2 に答える 2

32

pablisco が説明したように、 addAccountExplicitly()の userData Bundle パラメータを介して AccountManager の任意のユーザー データを保存する機能を使用できます。

    final Bundle extraData = new Bundle();
    extraData.putString("someKey", "stringData");
    boolean accountCreated = am.addAccountExplicitly(account, password, extraData);

後で、たとえばオーセンティケーターのgetAuthToken()メソッドで、使用しているアカウントに関連するデータを取得できます。

    String myData = am.getUserData(account, "someKey");

残念ながら、これを書いている時点では文字列しか取得できないため、最初にバンドルを構築するときにデータを文字列として保存する必要があります。これが誰かに役立つことを願っています。

于 2011-12-16T05:09:19.410 に答える
3

Android のドキュメントから、アカウントが追加されたときに userData Bundle のいずれかを使用して実行することになっています。

AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, null, userData);

または値を明示的に追加します。

manager.setUserData(account, KEY, value);

しかし、私はこれに問題があります:

AccountManager IllegalArgumentException: キーが null です

于 2011-12-02T18:29:48.843 に答える