久しぶりにAndroidの開発ネタ。Googleリーダーアプリ(RSSリーダー)を作ろうと思ったことがあり、AccountManagerの使い方を調べていた。

手順としては2段階となる。

  1. Android端末のGoogleアカウントを取得
  2. Googleサービスの情報を取得

AccountManagerを使うと、Android端末に登録されているGoogleのアカウント情報を取得できる。その後、Googleにログイン(認証Tokenを使用)して、Googleサービスの情報を取得する。

AccountManagerを使用する

AccountManagerで検索すると、以下のサイトが見つかる。丁寧に解説されていて、すごく参考になった。

ここはスキップ。上記のサイトを参考に。

Googleサービスの情報を取得

これでAccountManagerの使い方は分かるのだが、使い方が分からない。「Account Managerについて – adsaria mood」では、最後のサービスのデータ取得までは至っていない。

いろいろ試した結果、HttpHeaderに認証トークンを入れる事で、データ取得ができるようになった。今回は、Googleリーダーの情報が取得するサンプル。

[java]

private void loginGoogle(String token) {

DefaultHttpClient http_client = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(“http://www.google.com/reader/atom/user/-/state/com.google/read");

httpGet.setHeader(“Authorization”, “GoogleLogin auth=”+token);

HttpResponse response;

try {

response = http_client.execute(httpGet);

InputStream in = response.getEntity().getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(in));

String l = null;

while ((l = reader.readLine()) != null) {

Log.i(“MyApp”, l);

}

} catch (Exception e) {

e.printStackTrace();

}

}

[/java]

Googleリーダーの情報が取得できた。

今回、作ったサンプルのソース。Androidエミュレータで、Googleアカウントを設定してから起動する必要がある。起動後にボタンを押すと、Googleリーダーの情報をLogcatに出力する。

TestAccountManager1.java


GoogleリーダーのAPIは、以下のサイトを参考にした。正式に公開されていないらしい。