AndroidManifest.xmlにパーミッションを追加する。
データを格納するEntity
public final class AddressBookEntity implements Serializable { /** シリアルバージョンID. */ private static final long serialVersionUID = -7716446835875861023L; /** ID. */ private String contactId = null; /** 名前. */ private String name = null; /** メールアドレス. */ private String address = null; /** sortKey. */ private String sortKey = null; /* 以下、getter/setter */ }実際に取得するコードは以下
// DATA表からメールアドレスを全て取得 ContentResolver cr = context.getContentResolver(); Cursor cursor = cr.query(Data.CONTENT_URI, null, Data.MIMETYPE + " = ?", new String[] {Email.CONTENT_ITEM_TYPE}, "sort_key"); // ユーザ単位のアドレス情報を保持するList final List<AddressBookEntity> addressBooks = new ArrayList<AddressBookEntity>(); while (cursor.moveToNext()) { String id = cursor.getString(cursor.getColumnIndex(Data.CONTACT_ID)); // アドレス帳情報 AddressBookEntity addressBook = new AddressBookEntity(); // IDを設定する。 addressBook.setContactId(id); // sortKeyを設定する。 addressBook.setSortKey(cursor.getString(cursor.getColumnIndex("sort_key"))); // 表示名を設定する。 addressBook.setName(cursor.getString(cursor.getColumnIndex(Data.DISPLAY_NAME))); // メールアドレスを設定する。 addressBook.setAddress(cursor.getString(cursor.getColumnIndex(Data.DATA1))); // リストに追加 addressBooks.add(addressBook); } // カーソルを閉じる cursor.close();これでアドレス一覧が取得出来るが、
このままだと全電話帳のアドレス一覧が取れる。
指定電話帳だけの情報を取得したい場合は、もうちょっと考慮する必要がある。
おしまい。
0 件のコメント:
コメントを投稿