Запрос Android и сохранение номера дубликатов контактов

В настоящее время я пытаюсь запросить все контакты и сохранить их в базе данных. Однако я понимаю эту проблему, если у моего контакта несколько номеров, он возвращает мне то же имя контакта и другие несколько номеров. Но если у моего контакта есть электронная почта, запрос будет дублировать то же имя и тот же номер. Могу ли я узнать, как мне решить эту проблему? Я хотел бы сохранить имя и номер только один раз. И я бы не хотел иметь ничего общего с электронной почтой.

Мне удалось получить только номер мобильного телефона, указав, что я хочу только TYPE_MOBILE. Однако я понял, что если у моего контакта есть Google+, запрос дублирует то же имя и тот же номер. Может ли кто-нибудь вести меня по этой линии? Спасибо!

Вот код, который я использую:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext()) {
    int phoneType = phones.getInt(phones.getColumnIndex(Phone.TYPE));
    if (phoneType == Phone.TYPE_MOBILE)
    {
          mobile = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
          mobile = mobile.replaceAll("\\s", "");
          id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));
          name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
          long idL = DbHelper.createContact(name, "", mobile, "", id);
          if (idL > 0) {
                mRowId = idL;
          }
    }   
    phones.close();
}

person user1321096    schedule 05.07.2012    source источник


Ответы (2)


не сохраняйте номера в БД. это неправильный способ сделать это на Android. когда вам нужно найти имя контакта номера запроса и поиска. потому что пользователь может изменить что-то о контакте, и поэтому у вас будут старые данные в вашей базе данных.

person bmavus    schedule 05.07.2012
comment
Потому что я пытаюсь сделать список контактов, похожий на Viber. Я пытаюсь отобразить значок моего приложения рядом с контактом, если у контакта есть то же приложение. В противном случае, у вас есть какие-либо другие предложения? :) - person user1321096; 05.07.2012
comment
поэтому сохраните только идентификаторы номеров из списка контактов. попробуйте работать с вашим приложением с идентификационными номерами. и если вы не хотите дублировать числа, передавайте их в массив и при их извлечении проверьте, содержит ли массив этот номер. после этого сохраните идентификаторы номеров в свою базу данных - person bmavus; 05.07.2012
comment
Привет, теперь я могу проверить тип телефона, а затем сохранить номер мобильного телефона. Но я понял, что номер все равно будет дублироваться, если у контакта есть Google+. Любые идеи о том, как решить эту проблему? Я обновлю свой код в ближайшее время. - person user1321096; 12.07.2012

ArrayList<String> list =new ArrayList<String>();

в вашем цикле while

if(!list.contains(mobile)){
    list.add(mobile);
}

после заполнения списка их можно сохранить.

НО, я думаю то же самое о сохранении номеров в вашей базе данных. вместо того, чтобы сохранять их, сохраняйте их идентификаторы.

person bmavus    schedule 13.07.2012