Androidの開発をしていて、連絡先から誕生日を取得して、ごにょごにょする必要があったので、その際の備忘録。
コンテンツプロバイダ関連って余り情報がないので、こまった。。
連絡先を扱うには、パーミッションが必要です
今回は読み込みだけなので、以下をAndroidManifest.xmlに追加
<uses-permission android:name="android.permission.READ_CONTACTS"/>
検索・取得のはこんな感じ
//取得するカラムをは、名前とIDと誕生日 String[] projection = new String[]{ ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Event.CONTACT_ID, ContactsContract.CommonDataKinds.Event.START_DATE }; // 検索条件で、Event.TYPEがTYPE_BIRTHDAYのみに絞り込む String selection = ContactsContract.Data.MIMETYPE + "= ? AND " + ContactsContract.CommonDataKinds.Event.TYPE + "=" + ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY; String[] selectionArgs = new String[]{ ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE }; // ソートの指定はなし String sortOrder = null; Cursor cursor = context.getContentResolver().query( ContactsContract.Data.CONTENT_URI, projection, selection, selectionArgs, sortOrder); // あとは、whileで結果を取得 while (cursor.moveToNext()) { int nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); String name = cursor.getString(nameIndex); int birthIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE); String birthDay = cursor.getString(birthIndex); }
以上!!