前回はAndroid側にアカウントの定義をわかってもらうところまでやりました。
今回はとりあえずアカウントを作成できるようにしたいと思います。
サンプルなのであんまりめんどくさいことはやりません。
「アカウントと同期」→「アカウントの追加」→「Sampleアカウント」と選ばれたら、即アカウント作成とします。
ただ、重複はNGにします。アカウントは1個しか作りません。
さて、前回のプロジェクトで空実装だったAuthenticatorを実装していきましょう。
アカウントを作成できるようにするには、addAccount()を実装します。
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException {
return null;
}
前回はこんなコードでした。nullを返しているだけです。
ここに処理を追加し、アカウントを作ります。
アカウントはAccountクラスです。
インスタンスの作り方は↓こう。
Account account = new Account("アカウント名", "アカウントタイプ");
"アカウント名"は通常ユーザに入力してもらうものかと思いますけど、今回は固定値で"Sample"としておきます。
"アカウントタイプ"はaddAccountの引数accountTypeをそのまま使いましょう。
そして、アカウントを作るには↓こう。
AccountManager am = AccountManager.get(mContext);
am.addAccountExplicitly(account, "Password", null);
AccountManagerのaddAccountExplicitly()で作ることができます。
"Password"はパスワードです。これも固定値にしちゃってます。
アカウントを作るのであれば、これだけです。簡単です。
上で言っていた重複判定なんかは、いつものようにサンプルコードを置いておくので、そちらを見てくださいまし。
なお、addAccount()の戻り値はBundleです。
いろいろと自由に値を詰めることができます。
一応、AccountManagerにはすでにキーの定義がいくつかあります。
エラーコードやエラーメッセージを返す必要があるときは、AccountManagerで定義されたものを使うと良いでしょう。
また、今回のサンプルコードを実行するために以下の2つのパーミッションが必要です。
android.permission.GET_ACCOUNT
android.permission.AUTHENTICATE_ACCOUNTS
忘れずにManifestに書いておいてください。
実際にアカウントを追加してみるとこんな感じです。


アカウントの追加は以上です。
また、サンプルコードを置いておくので、よろしかったら見てください。
AccountSample.addAccount.zip
タグ:android