2011年12月6日火曜日

[android]ICSのCalendar APIの差分を"ちょっとだけ"見てみる。

備忘録を忘れそうになるくらい、ひっさびさの更新ですね。。。

android4.0の発表の際に、googleカレンダーの取り扱い代わるよ!
的なことは聞いてたので、今回はちょっと差分を見てみました。

googleカレンダーのカレンダー一覧を取得するコード

// カレンダーのリストの作成(android2.3)
private void CalendarList() {
 Uri uri = Uri.parse(
   "content://com.android.calendar/calendars");
 String[] projection = new String[]{"_id","displayName"};

 Cursor cursor = getContentResolver().query(uri,
   projection, null, null, null);

 if (cursor != null) {
  try {
   while (cursor.moveToNext()) {

    // カレンダー名とIDを取得
    String id = cursor.getString(cursor
      .getColumnIndex("_id"));
    String displayName = cursor.getString(cursor
      .getColumnIndex("displayName"));

    Log.d("CalendarList", id + " " + displayName);
   }
  } finally {
   cursor.close();
  }
 }
}

以前はこんな感じのコードだったんですが、
ICSでは下の書き方でいけます。

// カレンダーのリストの作成(android4.0)
private void CalendarList() {
 Uri uri = Calendars.CONTENT_URI;
 String[] projection = new String[] { Calendars._ID,
   Calendars.CALENDAR_DISPLAY_NAME };
 String selection = "((" + Calendars.ACCOUNT_NAME + " = ?)
   AND (" + Calendars.ACCOUNT_TYPE + " = ?))";

 // google calendar から取得
 String[] selectionArgs = new String[] {
   "my_name@gmail.com" , "com.google" };

 Cursor cursor = getContentResolver().query(
   uri, projection, selection, selectionArgs, null);

 if (cursor != null) {
  try {
   while (cursor.moveToNext()) {

    // カレンダー名とIDを取得
    String id = cursor.getString(cursor
      .getColumnIndex(Calendars._ID));
    String displayName = cursor.getString(cursor
      .getColumnIndex(Calendars.CALENDAR_DISPLAY_NAME));

    Log.d("CalendarList", id + " " + displayName);
   }
  } finally {
   cursor.close();
  }
 }
}


差分としてはURIの指定方法が変わったのと、
以前はgoogle calendarのAPIにあったフィールド(IDとか)が
直接指定できるようになってるのですごい楽になってる。

ICS以前からの修正はそこまで大きくないと思ってるので、
使ってるアプリが早くVerUpされるのを期待するる。

0 件のコメント:

コメントを投稿