連絡先をプログラムで読み、のに表示する必要がありListView
ますActivity
。CheckBox
アイテムでsを使用しListView
、複数のアイテムを選択できるようにします。の簡単な例/チュートリアルを見つけて、ListView
そこから始めます。
ListView
使用するよりもカスタムを作成する方がよい理由はいくつかありますIntent(Intent.ACTION_GET_CONTENT);
。
- あなたが要求したように倍数を選択する方法がないかもしれません。
- 複数を選択する方法を見つけたとしても、OSのバージョンやデバイスごとに異なり、すべてで機能するとは限りません。
- を処理できるデバイスに複数のアプリケーションがインストールされている場合は
ACTION_GET_CONTENT
、ユーザーにチューザーが表示され、ユーザーはそのうちの1つを選択する必要があります。ユーザーの選択は、複数の連絡先の選択をサポートしていない場合があります。
システムの連絡先を読み取る例を次に示します。
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while (cursor.moveToNext()) {
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if("1".equals(hasPhone) || Boolean.parseBoolean(hasPhone)) {
// You know it has a number so now query it like this
Cursor phones = myActivity.getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
while (phones.moveToNext()) {
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int itype = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
final boolean isMobile =
itype == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE ||
itype == ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE;
// Do something here with 'phoneNumber' such as saving into
// the List or Array that will be used in your 'ListView'.
}
phones.close();
}
}