До Android 2.0 вам нужно запросить Contacts.ContactMethods.CONTENT_URI, чтобы получить почтовые адреса, которые вам нужно будет передать
Contacts.ContactMethods.PERSON_ID + "=? and " + Contacts.ContactMethods.KIND + "=?"
для выбора и для параметра selectArgs:
new String[] { personId, Integer.toString(Contacts.KIND_POSTAL) }
Начиная с 2.0, вы используете новый ContactsContract, который намного сложнее, потому что контакт теперь может собирать информацию по нескольким источникам. Некоторые хорошие групповые сообщения о новом API: здесь и здесь .
Рекомендуемый способ нацеливания на несколько API платформ из одного и того же двоичного файла - использовать отражение (см. Этот пост в блоге ). Я обнаружил, что если в манифесте вы нацеливаете свое приложение на 1.6 или ниже, но устанавливаете путь сборки, чтобы выбрать jar-файл Android 2.0, вы можете вызвать 2.0 apis без необходимости размышлений. Вам просто нужно быть ОЧЕНЬ осторожным, чтобы классы, которые зависят от классов 2.0, не загружались в устройство 1.6, иначе загрузчик классов сработает. Чтобы избежать этого, вам нужно будет использовать какую-то фабрику для разрыва зависимостей (или DI-фреймворк, такой как Guice). См. сообщение для дальнейшего обсуждения.