ページ

2011年12月5日月曜日

メールアドレス一覧を取得する。

既存の電話帳からメールアドレスの一覧を取得してみる。
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 件のコメント:

コメントを投稿