Androidアプリ上で扱う写真や、動画、音声ファイル、電話帳、ブックマークなどあらゆるデータの情報はAndroid内部のDBに登録されている・・・。
このDBにアクセスするには、ContentResolverを使う・・・。
ContentResolver | Android Developers
今回は、電話帳データにアクセスして、名前を列挙する・・・。
activity_main.xmlは、
ListViewを配置・・・。
ということはアイテムのクラスとアダプタのクラスが必要・・・。
Classの追加・・・。
ListItemクラス・・・。
住所や電話番号なども列挙したかったが、取り出し方が面倒なので、今回は名前だけ・・・。
XMLを追加・・・。
list_itemにアイテムのレイアウトを書く・・・。
名前のTextViewだけ・・・。
アダプタを追加する・・・。
ArrayAdapter<ListItem>派生のListItemAdapter・・・。
Viewの表示が要求されたら名前のTextViewに取得した名前を表示・・・。
MainActivityでは、getContentResolverでcontentResolverを取得・・・。
contentResolver.queryには取得したいデータをURIやクエリで指定する・・・。
(実体はSQLiteDatabaseなので、SQL的な感じで条件を指定・・・。)
ContactsContract.Contacts.CONTENT_URIは連絡先のURIを指すマクロ・・・。
今回は全部取得するので、条件はすべてnull・・・。
あとはContactsContract.Contacts.DISPLAY_NAMEが表示名のカラムを指すので、これを取り出し、listitemsに追加していく・・・。
"あかさ5"と"山田太郎22"が存在するか見てみる・・・。
"あかさ5"があった・・・。しかも2つ・・・。
(他のメールとか同期しているために、大量の名前が出てきたが個人情報なので伏せている・・・。
隠していないのは適当に作ったテスト連絡先・・・。)
"山田太郎22"もいた・・・。