Android分頁查詢獲取系統聯系人信息

gxw6 9年前發布 | 2K 次閱讀 Java Android


import java.util.ArrayList;
import java.util.List;

import android.R.integer;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;

import android.provider.ContactsContract;

import com.example.yqqmobilesafe.domain.ContactInfo;

public class ContactInfoProvider {
private Context mContext;
public ContactInfoProvider(Context context) {
mContext=context;

}  
/** 
 * 獲取系統聯系人信息 
 * @return 
 */  
public  List<ContactInfo> getSystemContactInfos(){  
    List<ContactInfo> infos=new ArrayList<ContactInfo>();  

    // 使用ContentResolver查找聯系人數據  
    Cursor cursor = mContext.getContentResolver().query(  
        ContactsContract.Contacts.CONTENT_URI, null, null,  
        null, null);  

    // 遍歷查詢結果,獲取系統中所有聯系人  
    while (cursor.moveToNext())  
    {  
        ContactInfo info=new ContactInfo();  
        // 獲取聯系人ID  
        String contactId = cursor.getString(cursor  
            .getColumnIndex(ContactsContract.Contacts._ID));  
        // 獲取聯系人的名字  
        String name = cursor.getString(cursor.getColumnIndex(  
            ContactsContract.Contacts.DISPLAY_NAME));  
        info.setContactName(name);  

        // 使用ContentResolver查找聯系人的電話號碼  
        Cursor phones = mContext.getContentResolver().query(  
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  
            null,  
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID  
                + " = " + contactId, null, null);  

        // 遍歷查詢結果,獲取該聯系人的多個電話號碼  
        while (phones.moveToNext())  
        {  
            // 獲取查詢結果中電話號碼列中數據。  
            String phoneNumber = phones.getString(phones  
                .getColumnIndex(ContactsContract  
                .CommonDataKinds.Phone.NUMBER));  
            info.setPhoneNumber(phoneNumber);  
        }  
        phones.close();  

        infos.add(info);  
        info=null;  
    }  
    cursor.close();  

    return infos;  

}  

/** 
 * 分頁查詢系統聯系人信息 
 * @param pageSize 每頁最大的數目 
 * @param currentOffset 當前的偏移量 
 * @return 
 */  
public List<ContactInfo> getContactsByPage(int pageSize,int currentOffset) {  

    List<ContactInfo> infos=new ArrayList<ContactInfo>();  
            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;   
            String[] projection = { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,  
                                    ContactsContract.CommonDataKinds.Phone.DATA1, "sort_key"};  
            Cursor cursor = mContext.getContentResolver().query(uri, projection, null, null, "sort_key COLLATE LOCALIZED asc limit " + pageSize + " offset " + currentOffset);  
            if (cursor != null) {  

                while (cursor.moveToNext()) {  

                    ContactInfo info=new ContactInfo();  
                    String contactName = cursor.getString(0);  
                    String phoneNumber = cursor.getString(1);  
                    info.setContactName(contactName);  
                    info.setPhoneNumber(phoneNumber);  
                    infos.add(info);  
                    info=null;  
                }  
                cursor.close();  


}  
            return infos;  
}  

/** 
 * 獲得系統聯系人的所有記錄數目 
 * @return 
 */  
public int getAllCounts(){  
    int num=0;  
    // 使用ContentResolver查找聯系人數據  
            Cursor cursor = mContext.getContentResolver().query(  
                ContactsContract.Contacts.CONTENT_URI, null, null,  
                null, null);  

            // 遍歷查詢結果,獲取系統中所有聯系人  
            while (cursor.moveToNext())  
            {  
                num++;  
            }  
            cursor.close();  


    return num;  
}  


} </pre>

 本文由用戶 gxw6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!