電話帳、Contact の情報は、ContentResolverで読む。
Android 端末 使用中SIMの登録したGoogle アカウント上の Contact 情報、まで読込む場合、
ContactsContract.CommonDataKinds.Email.CONTENT_URI を使う。
public void scan(Context context){
Uri uri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
uri = uri.buildUpon().appendQueryParameter("address_book_index_extras", "true").build();// これは使うべきではない!!非公開のoption
String projection = { ContactsContract.Data.CONTACT_ID
, Contacts.DISPLAY_NAME
, ContactsContract.RawContacts.PHONETIC_NAME
, ContactsContract.CommonDataKinds.Email.DATA1
, ContactsContract.CommonDataKinds.Phone.NUMBER
, ContactsContract.RawContacts.STARRED
};
String selection = ContactsContract.Data.MIMETYPE + " =? OR " + ContactsContract.Data.MIMETYPE + " =?";
String selectionArgs = { "vnd.android.cursor.item/name", "vnd.android.cursor.item/email_v2" };
String sortOrder = Contacts.SORT_KEY_PRIMARY + " ASC";
Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
if (cursor.moveToFirst()){
int contactId_Index = cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID);
int diplayName_Index = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
int email_Index = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA1);
int starred_Index = cursor.getColumnIndex(ContactsContract.RawContacts.STARRED);
do{
int contactId = cursor.getInt(contactId_Index);
String diplayName = cursor.getString(diplayName_Index);
String email = cursor.getString(email_Index);
boolean starred = cursor.getInt(starred_Index) == 1;
}while(cursor.moveToNext());
}
cursor.close();
}
端末の電話帳は、、 ContactsContract.CommonDataKinds.Phone.CONTENT_URI を使う、
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
uri = uri.buildUpon().appendQueryParameter("address_book_index_extras", "true").build();
String projection = { ContactsContract.Data.CONTACT_ID
, Contacts.DISPLAY_NAME
, ContactsContract.RawContacts.PHONETIC_NAME
, ContactsContract.CommonDataKinds.Phone.NUMBER
, ContactsContract.RawContacts.STARRED
};
String selection = ContactsContract.Data.MIMETYPE + " =? OR " + ContactsContract.Data.MIMETYPE + " =?";
String selectionArgs = { "vnd.android.cursor.item/name", "vnd.android.cursor.item/phone_v2" };
String sortOrder = Contacts.SORT_KEY_PRIMARY + " ASC";
Cursor cursor.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
if (cursor.moveToFirst()){
int contactId_Index = cursor.getColumnIndex(ContactsContract.Data.CONTACT_ID);
int diplayName_Index = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
int phoneticName_Index = cursor.getColumnIndex(ContactsContract.RawContacts.PHONETIC_NAME);
int phone_Index = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int starred_Index = cursor.getColumnIndex(ContactsContract.RawContacts.STARRED);
do{
int contactId = cursor.getInt(contactId_Index);
String diplayName = cursor.getString(diplayName_Index);
String phoneticName = cursor.getString(phoneticName_Index);
String phone = cursor.getString(phone_Index);
boolean starred = cursor.getInt(starred_Index) == 1;
}while(cursor.moveToNext());
}
cursor.close();