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 件のコメント:
コメントを投稿