1. add user perimission
<uses-permission android:name="android.permission.READ_CONTACTS"/>
2. This is the data entity
import java.util.List;
public class Contact {
// Phone number
private List<String> mPhoneNumbers;
public void setPhoneNumbers(List<String> phontNumberList) {
this.mPhoneNumbers = phontNumberList;
}
public List<String> getPhoneNumbers() {
return mPhoneNumbers;
}
// Display Name
public void setDisplayName(String displayName) {
this.mDisplayName = displayName;
}
public String getDisplayName() {
return mDisplayName;
}
private String mDisplayName;
//Contact ID
private long mContactID;
public void setContactID(long contactID) {
mContactID = contactID;
}
public long getContactID() {
return mContactID;
}
// Photo ID
private long mPhotoID;
public void setPhotoID(long photoID) {
mPhotoID = photoID;
}
public long getPhotoID() {
return mPhotoID;
}
}
3. Create Contacts Manager
import java.util.ArrayList;
import java.util.List;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
public class ContactsManager {
private static ContactsManager instance = null;
private List<Contact> mContactList;
private ContactsManager(Context context) {
mContactList = GetAllContacts(context);
}
public static ContactsManager getInstance(Context context) {
if(instance == null) {
instance = new ContactsManager(context);
}
return instance;
}
private List<Contact> GetAllContacts(Context context)
{
List<Contact> contactList = new ArrayList<Contact>();
ContentResolver resolver = context.getContentResolver();
// 获取手机联系人
Cursor phoneCursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
Contact c = new Contact();
// set display name
String displayName = phoneCursor.getString(
phoneCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
c.setDisplayName(displayName);
// set contactID
String contactId = phoneCursor.getString(
phoneCursor.getColumnIndex(ContactsContract.Contacts._ID));
c.setContactID(Long.parseLong(contactId));
// has phoneNumberFlag
String hasPhone = phoneCursor.getString(
phoneCursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
// 如果有电话号码
if (hasPhone.compareTo("1") == 0)
{
Cursor phones = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null
,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
List<String> phoneNumbers = new ArrayList<String>();
while (phones.moveToNext())
{
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNumbers.add(phoneNumber);
}
c.setPhoneNumbers(phoneNumbers);
}
// set Photo ID
String photoID = phoneCursor.getString(
phoneCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
if(photoID != null)
c.setPhotoID(Long.parseLong(photoID));
else
c.setPhotoID(0); // add to list
contactList.add(c);
}
}
return contactList;
}
public List<Contact> getContactList()
{
return mContactList;
}
public String getContactName(long contactID)
{
String name="";
if(mContactList != null)
{
for(int i=0; i<mContactList.size();i++)
{
Contact contact = mContactList.get(i);
if(contact.getContactID() == contactID)
{
name = contact.getDisplayName();
break;
}
}
}
return name;
}
}
4. Usage
ContactsManager contactsManager = ContactsManager.getInstance(SMSService.this);
If you use it in Activity, just pass the Activity as context. I am using it in the service.
分享到:
相关推荐
Contacts.initialize(this); } Get All Contacts List contacts = Contacts.getQuery().find(); Get Contacts with phone numbers only Query q = Contacts.getQuery(); q.hasPhoneNumber(); List contacts = q....
android Contacts增删改查.docx
联系人(com.android.contacts).bak
part-2 win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)
part-1 win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)win2003-MSN(Contacts.msi+messenger.msi)
资源来自pypi官网。 资源全名:seantis.dir.contacts-1.7.2.tar.gz
1.高效率读取联系人分组 2.高效率读取联系人列表(含有很酷的按字母分组的功能) 3.使用SQLLite存储 4.使用ksoap2调取webservice
python库。 资源全名:mypy-boto3-ssm-contacts-1.19.9.tar.gz
资源来自pypi官网。 资源全名:go-contacts-0.1.9.tar.gz
资源分类:Python库 所属语言:Python 资源全名:contacts2csv-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网。 资源全名:domain_shared_contacts_client-0.1.0.tar.gz
添加新联系人时出现: “很抱歉,应用程序联系人(在进程com.android.htccontacts中)已意外停止。 其他打电话都还正常,但是添加联系人不行,一添加就会出现这个提示,然后自动跳出。使用本软件修复可解决
android contacts qurey mode
安卓Android源码——Contacts.rar
Android应用源码之Contacts_Android
Open Contacts 是一款免费的通讯簿软件,它能够记录如姓名、电话、手机、地址、传真、电子邮件、生日、部门、公司...等数十种数据,并且连联络人的相片都能够储存喔。而最棒的是,它还能够为联络人彼此之间建立关连...
Angular-angular-contacts-app-example.zip,带ngrx和nestjs的完整堆栈角pwa示例应用程序带ngrx存储、效果(http websockets)、实体和nestjs的完整堆栈角pwa应用程序,Angularjs于2016年发布,是Angularjs的重写版。...
以前上传的联系人模块忘记把jar包放上去了 实在抱歉 现在添加上去 有需要的可以下载