【发布时间】:2018-07-19 22:57:31
【问题描述】:
我想获取所有联系人数据,包括所有原始联系人。 我提到了这个link
这是我正在使用的代码:
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, Long.valueOf(raw_contact_id));
Uri entityUri = Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
Cursor c = getContentResolver().query(entityUri,
new String[] { RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1,
Entity.DATA2, Entity.DATA3, Entity.DATA4, Entity.DATA5, Entity.DATA6, Entity.DATA7,
Entity.DATA8, Entity.DATA9, Entity.DATA10, Entity.DATA11, Entity.DATA12, Entity.DATA13,
Entity.DATA14/* , Entity.DATA15 */ },
null, null, null);
try {
while (c.moveToNext()) {
String sourceId = c.getString(0);
if (!c.isNull(1)) {
String mimeType = c.getString(2);
// if (!mimeType.contains("photo")) {
String data1 = c.getString(3);
String data2 = c.getString(4);
String data3 = c.getString(5);
String data4 = c.getString(6);
}
}
} finally {
c.close();
}
问题是这段代码的实现需要花费大量时间来获取所有联系人数据。
有没有其他方法可以在 5 秒内获取联系人数据。
【问题讨论】:
-
你想得到什么样的数据?
-
为什么您需要一次获取所有数据。只需在需要时获取数据。
-
如果不需要,不要从所有列中获取数据
-
我需要构成特定联系人的所有原始联系人的电话号码、电子邮件、组织、事件、关系、组、地址、结构化名称等。工作项目需要它。请分享一些想法。
-
速度取决于您拥有的联系数据量。 1000 个联系人将轻松超过您的 5s 要求。为什么不异步进行查询,仅在加载所有数据后才显示结果。
标签: android