您能否告诉我如何取回联系人组以编程方式 存储在我们的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. 访问FAcebook联系人
- 2. 访问联系人数据
- 3. 访问WP7联系人
- 4. Android联系人组更改
- 5. Android联系人问题
- 6. 拒绝联系人访问(联系人框架,iOS)
- 7. 访问联系人的联系人号码
- 8. Google联系人每个联系人的API检索组名称
- 9. Android联系人
- 10. 需要帮助访问系统内置的联系人在android
- 11. 访问android棉花糖中的联系人问题
- 12. 的Windows电话:访问联系人
- 13. 使用蓝牙访问联系人
- 14. 访问联系人过滤器
- 15. 访问联系人iOS目标c
- 16. 访问联系人内容提供商
- 17. 访问ios中的联系人
- 18. App Engine和API访问联系人
- 19. 访问手机上的联系人
- 20. android获取联系人的名字
- 21. autocomplete联系人android
- 22. Android的联系人
- 23. 从名册组的联系人3.8
- 24. android联系人列表创建组
- 25. Android 2.0联系人组操作
- 26. Android:从SIM卡存储器访问联系人
- 27. Android:如何使用SDK访问SIM联系人表格?
- 28. Android:使用Raw联系人ID正确访问和查询
- 29. Android,无法访问联系人电话号码
- 30. NullPointerExpection:基本联系人访问Android应用程序
这是我的问题的完美解决方案。但是,在这里我不明白使用GlobalConfig类和它存储给定GroupContainsTitle的方式。所以@Abhishek可以澄清更多关于GlobalConfig类的内容。这将节省我的时间。 – Prativa 2012-06-13 05:18:31
@prativa GlobalConfig只是一个简单的静态类,在这里用来存储可在整个应用程序中访问的静态集合。 – Abhi 2012-08-18 06:03:23