Не могли бы вы рассказать мне, как получить контактные группы программно хранятся в нашем телефоне Android?Доступ к контактам группы контактов Android
8
A
ответ
9
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
cursor = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, null,
null, ContactsContract.Groups.TITLE);
GlobalConfig.groupList.clear();
Group g = new Group();
g.GroupIdList += "0";
g.setGroupTitle("ALL");
GlobalConfig.groupList.add(g);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Groups._ID));
String gTitle = (cursor.getString(cursor
.getColumnIndex(ContactsContract.Groups.TITLE)));
if (gTitle.contains("Group:")) {
gTitle = gTitle.substring(gTitle.indexOf("Group:") + 6).trim();
}
if (gTitle.contains("Favorite_")) {
gTitle = "Favorites";
}
if (gTitle.contains("Starred in Android")
|| gTitle.contains("My Contacts")) {
continue;
}
Group gObj = new Group();
int pos = GlobalConfig.GroupContainsTitle(gTitle);
if (pos != -1) {
gObj = GlobalConfig.groupList.get(pos);
gObj.GroupIdList += "," + id;
GlobalConfig.groupList.set(pos, gObj);
} else {
gObj.GroupIdList += id;
gObj.setGroupTitle(gTitle);
GlobalConfig.groupList.add(gObj);
}
// Log.d("GrpId Title", gObj.getGroupIdList() +
// gObj.getGroupTitle());
}
5
Ответ на @Abhi хорошо, но имеет некоторые ограничения:
- перечислит удаленные контакты
- перечислят Невидимые группы
- перечислит фантомные групп (то есть группы, которые должны были быть удалены, но все еще находятся в подвешенном состоянии)
-
private class GroupInfo {
String id;
String title;
@Override
public String toString() {
return title+ " ("+id+")";
}
public String getId() {
return id;
}
}
List<GroupInfo> groups = new ArrayList<GroupInfo>();
public void loadGroups() {
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE,
ContactsContract.Groups.SUMMARY_WITH_PHONES
};
Cursor c = getContentResolver().query(
ContactsContract.Groups.CONTENT_SUMMARY_URI,
GROUP_PROJECTION,
ContactsContract.Groups.DELETED+"!='1' AND "+
ContactsContract.Groups.GROUP_VISIBLE+"!='0' "
,
null,
null);
final int IDX_ID = c.getColumnIndex(ContactsContract.Groups._ID);
final int IDX_TITLE = c.getColumnIndex(ContactsContract.Groups.TITLE);
Map<String,GroupInfo> m = new HashMap<String, GroupInfo>();
while (c.moveToNext()) {
GroupInfo g = new GroupInfo();
g.id = c.getString(IDX_ID);
g.title = c.getString(IDX_TITLE);
int users = c.getInt(c.getColumnIndex(ContactsContract.Groups.SUMMARY_WITH_PHONES));
if (users>0) {
// group with duplicate name?
GroupInfo g2 = m.get(g.title);
if (g2==null) {
m.put(g.title, g);
groups.add(g);
} else {
g2.id+=","+g.id;
}
}
}
c.close();
}
1
Не нужно отвечать на старые ответы. Здесь гораздо более простое решение.
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
Cursor gC = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION,null,null,null);
gC.moveToFirst();
while (!gC.isAfterLast()) {
int idcolumn = gC.getColumnIndex(ContactsContract.Groups.TITLE);
String Id = gC.getString(idcolumn);
ArrayL.add(Id);
gC.moveToNext();
}
LinkedHashSet<String> s = new LinkedHashSet<String>();
s.addAll(ArrayL);
ArrayL.clear();
ArrayL.addAll(s);
Смежные вопросы
- 1. Доступ к контактам WP7
- 2. Android: доступ к контактам из памяти SIM-карты
- 3. Доступ к контактам по телефону
- 4. Windows Phone: Доступ к контактам
- 5. ИОС 8: Доступ к контактам/ошибка AddressBook
- 6. Доступ к контактам на Android с помощью Phonegap
- 7. Не удается получить доступ к контактам через Office365 Unified API
- 8. Проблема при доступе к контактам android
- 9. Доступ к телефонным контактам Android с телефоном и Sencha Touch
- 10. Список контактов, не доступ ко всем контактам phonegap
- 11. Группы контактов приложений для Android
- 12. API контактов Google - Доступ к другим пользователям
- 13. Исключение безопасности Android при доступе к контактам
- 14. Доступ к контактам в Outlook/обмене через VSTO
- 15. Как вы можете ускорить доступ к контактам на Android?
- 16. Как получить доступ к контактам android в массив
- 17. Мне нужно получить доступ к контактам IOS из моего приложения.
- 18. Можете ли вы получить доступ к сим-контактам от J2ME?
- 19. У пользователя есть доступ к контактам?
- 20. Запрос разрешения на доступ к контактам
- 21. Как получить доступ к контактам телефонной книги?
- 22. Подгруппа контактов Google группы контактов
- 23. Как получить доступ к контактам в приложении Windows Phone 8.0?
- 24. Удаление группы контактов iOS
- 25. Доступ к контактам и получение адреса электронной почты
- 26. Как добавить почтовый адрес к контактам в android programmaticaly?
- 27. Как получить доступ к контактам в Windows 10 UWP?
- 28. Как получить определенные группы контактов на Android?
- 29. App Engine и API, обращающиеся к контактам
- 30. Outlook: Как получить доступ к другим папкам контактов?
Это идеальное решение для моего вопроса. Но здесь я не понимаю использования класса GlobalConfig и способа хранения данного GroupContainsTitle. Поэтому @Abhishek может уточнить больше о классе GlobalConfig. Это сэкономит мое время. – Prativa 2012-06-13 05:18:31
@prativa GlobalConfig - это простой статический класс, который используется здесь для хранения статических коллекций, доступных во всем приложении. – Abhi 2012-08-18 06:03:23