電話帳からメールアドレスを取得するにはAndroid1.6以前
メーラーアプリを作るにあたり登録されている連絡先を取得し
一覧表示しなければならなかったので下のように記述した。
// 連絡先を取得 Cursor cursor = managedQuery( People.CONTENT_URI, null, null, null, null); // 連絡先をリストに格納 ArrayList<String> str = new ArrayList<String>(); ArrayList<String> ids = new ArrayList<String>(); while(cursor.moveToNext()){ ids.add(cursor.getString(cursor.getColumnIndex(People._ID))); str.add(cursor.getString(cursor.getColumnIndex(People.DISPLAY_NAME))); } // 連絡先を表示 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, str); ListView.setAdapter(adapter);
上記コードを実行すると連絡先の並びがバラバラなうえに、
メールアドレスが登録されていない人も表示される。
そこで取得条件にはメールアドレスが登録されている人、
並び順は履歴順になるよう下のように変更した。
// 連絡先を取得 String where_str = People.PRIMARY_EMAIL_ID + " IS NOT NULL "; String order_str = People.LAST_TIME_CONTACTED + " DESC"; Cursor cursor = managedQuery( People.CONTENT_URI, null, where_str, null, order_str); // 連絡先をリストに格納 ~(省略)~
これでメールアドレスが登録されていて、かつ履歴順に連絡先一覧を表示することができた。
履歴順になるよう2行目でPeople.LAST_TIME_CONTACTEDを使っているが、People.PHONETIC_NAME
を使うと名前順に並べることができる。
電話帳へアクセスするにはマニフェストにパーミッションを記述し忘れないよう注意してください。
<uses-permission android:name="android.permission.READ_CONTACTS"/>