Уже более двух дней я пытаюсь получить список всех контактов из внутренней адресной книги (без facebook-, gmail- или твиттер-контактов) с указанием их фамилии и имени.
Мне удалось получить список со всеми контактами, включая социальные контакты. Поэтому я посмотрел на account_types и увидел, что в моем HTC Desire все внутренние контакты адресной книги были из «com.htc.android.pcsc», и я сказал «Отлично, мне просто нужно отфильтровать весь список». Но тогда все люди с не-htc android мобильными телефонами не смогут использовать мое приложение, если я жестко закодирую этот фильтр.
Следующая идея состояла в том, чтобы позволить пользователю выбрать, какую учетную запись он хочет использовать, но, к сожалению, «com.htc.android.pcsc» не появился в списке, который я получил от AccountManager?!?
Итак, мой вопрос:
Есть ли какой-нибудь стандартизированный способ доступа к внутренней адресной книге? Я действительно застрял с этим, и любой намек очень важен!
/ edit: Может быть, я недостаточно ясно выразился.
Я могу получить список контактов через ContactsContract API:
ArrayList phoneContacts = new ArrayList();
String[] projection = new String[] {
Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME
};
String selection = Data.MIMETYPE+" = '"+ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE+"'";
Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null);
while (cursor.moveToNext()) {
phoneContacts.add(...);
}
cursor.close();
Но тогда у меня есть контакты со всех типов учетных записей, таких как com.google / com.htc.socialnetwoork.facebook и т. Д.
И мой вопрос: как я могу отфильтровать все эти соцсети и gmailконтакты, чтобы у меня был список с контактами, которые только из моей внутренней адресной книги?
/ edit2: Я нашел пример, описывающий ту же сложность, что и у меня:
http://forum.synthesis.ch/showthread.php?t=2057
У Synthesis AG была та же проблема со своим SyncML, что люди жаловались, что не могут синхронизироваться со своей внутренней адресной книгой / телефонной книгой только с gmail, facebook и т. Д.
Но им удалось отделить внутреннюю адресную книгу от всех этих других типов учетных записей. Поэтому должен быть способ решить эту проблему, но я не могу понять, как это сделать. Пожалуйста, помогите!