gpt4 book ai didi

android - 如何从android中的 native 电话簿获取联系人

转载 作者:太空狗 更新时间:2023-10-29 15:39:41 27 4
gpt4 key购买 nike

我想在列表中显示所有 native 联系人,并让用户将列表中的联系人(多个联系人)添加到我的应用程序数据库中。如何做到这一点任何人都可以给我想法或分享一些代码..提前致谢..

最佳答案

我在 Android 2.1 上使用了这段代码。它提取任何拥有电话号码(由 String SELECTION 变量定义)的人并返回一个 Person 类型的列表。 Person 是一个包含用户姓名和电话号码的对象。您必须实现一个 Person 对象才能使用此代码,但它可以完美运行:

public List<Person> getContactList(){
ArrayList<Person> contactList = new ArrayList<Person>();

Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
String[] PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
};
String SELECTION = ContactsContract.Contacts.HAS_PHONE_NUMBER + "='1'";
Cursor contacts = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, PROJECTION, SELECTION, null, null);


if (contacts.getCount() > 0)
{
while(contacts.moveToNext()) {
Person aContact = new Person();
int idFieldColumnIndex = 0;
int nameFieldColumnIndex = 0;
int numberFieldColumnIndex = 0;

String contactId = contacts.getString(contacts.getColumnIndex(ContactsContract.Contacts._ID));

nameFieldColumnIndex = contacts.getColumnIndex(PhoneLookup.DISPLAY_NAME);
if (nameFieldColumnIndex > -1)
{
aContact.setName(contacts.getString(nameFieldColumnIndex));
}

PROJECTION = new String[] {Phone.NUMBER};
final Cursor phone = managedQuery(Phone.CONTENT_URI, PROJECTION, Data.CONTACT_ID + "=?", new String[]{String.valueOf(contactId)}, null);
if(phone.moveToFirst()) {
while(!phone.isAfterLast())
{
numberFieldColumnIndex = phone.getColumnIndex(Phone.NUMBER);
if (numberFieldColumnIndex > -1)
{
aContact.setPhoneNum(phone.getString(numberFieldColumnIndex));
phone.moveToNext();
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (!mTelephonyMgr.getLine1Number().contains(aContact.getPhoneNum()))
{
contactList.add(aContact);
}
}
}
}
phone.close();
}

contacts.close();
}

return contactList;
}

编辑:一个基本的 Person 类:

public class Person {
String myName = "";
String myNumber = "";

public String getName() {
return myName;
}

public void setName(String name) {
myName = name;
}

public String getPhoneNum() {
return myNumber;
}

public void setPhoneNum(String number) {
myNumber = number;
}
}

关于android - 如何从android中的 native 电话簿获取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253029/

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