gpt4 book ai didi

android获取联系人详细信息,例如号码和缩略图

转载 作者:搜寻专家 更新时间:2023-11-01 07:54:52 25 4
gpt4 key购买 nike

我使用此代码可以获取联系人的号码和联系人的缩略图,但这不合适并且需要很长时间才能加载和准备联系人。

请帮助我提高这段代码的性能:

List<Contact_Pojo> list = new ArrayList<Contact_Pojo>();
ContentResolver cr = getActivity().getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, Phone.DISPLAY_NAME + " ASC");

int i = 0;
if (cur.moveToFirst()) {
while (cur.moveToNext()) {

Cursor phoneCursor = getActivity()
.getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER, },
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?",
new String[] { cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID)) },
null);

if (phoneCursor.moveToFirst()) {
Contact_Pojo personContact = new Contact_Pojo();
/*
* Id
*/
personContact.setId(cur.getString(1));
/*
* Name
*/
personContact
.setName(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
/*
* Photo ID
*/
personContact
.setImageUrl(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI)));
/*
* Number
*/
personContact.setNumber(phoneCursor.getString(0));
//
list.add(personContact);
}

phoneCursor.close();

}
}

cur.close();
return list;

2015 年 4 月 4 日更新

  • 它很慢,因为它从联系人提供者那里获取所有列,在此表中有 +20 列需要很多时间。

最佳答案

如何使用 AsyncTaskLoader,

想获取联系人列表的时候写这段代码

getLoaderManager() or getSupportLoaderManager().initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> loadingCallback)

public class LoadingCallback implements LoaderManager.LoaderCallbacks<Void> {
@Override
public Loader<Void> onCreateLoader(int i, Bundle bundle) {
// Show your dialog;
return new InitializeContactsTask(context, (ArrayList) contactList, mAdapter);
}

@Override
public void onLoadFinished(Loader<Void> voidLoader, Void aVoid) {
// UI Work here after background task and hide dialog.
}

@Override
public void onLoaderReset(Loader<Void> voidLoader) {
}
}

public class InitializeApplicationsTask extends AsyncTaskLoader<Void> {
@Override
protected void onStartLoading() {
forceLoad();
}

@Override
public Void loadInBackground() {
// Query the contacts here and return null

return null;
}
}

关于android获取联系人详细信息,例如号码和缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com