android获取联系人和搜索联系人

获取联系人需要有读取联系人权限

<uses-permission android:name="android.permission.READ_CONTACTS" />
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.text.TextUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PhoneUtils {
    private static Context context = BaseApplication.context;

    /**
     * 获取所有联系人
     * @return
     */
    public static List<DirectoriesBean> getDirectories(){
        // 号码
        String NUM = ContactsContract.CommonDataKinds.Phone.NUMBER;
        // 联系人姓名
        String NAME = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
        String PHOTO = ContactsContract.CommonDataKinds.Phone.PHOTO_URI;
        String ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;

        //获取联系人信息的Uri
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        //获取ContentResolver
        ContentResolver contentResolver = context.getContentResolver();
        //查询数据,返回Cursor
        Cursor cursor = contentResolver.query(uri, null, null, null, null);

        List<DirectoriesBean> list = new ArrayList<>();
        while (cursor.moveToNext()) {
            String name = cursor.getString(cursor.getColumnIndex(NAME));
            String phone = cursor.getString(cursor.getColumnIndex(NUM));
            String photo = cursor.getString(cursor.getColumnIndex(PHOTO));
            String id = cursor.getString(cursor.getColumnIndex(ID));
            list.add(new DirectoriesBean(id,name,phone,TextUtils.isEmpty(photo)?null:Uri.parse(photo)));
        }
        return list;
    }

    /**
     * 搜索联系人
     * @param search 可以是姓名或者号码
     * @return
     */
    public static List<DirectoriesBean> searchDirectories(String search){
        List<DirectoriesBean> list = getDirectories();
        List<DirectoriesBean> list2 = new ArrayList<>();
        if(isDigit(search)){
            for (DirectoriesBean b : list){
                if(b.getPhone().contains(search))
                    list2.add(b);
            }
        }else {
            for (DirectoriesBean b : list){
                if(b.getName().contains(search))
                    list2.add(b);
            }
        }
        return list2;
    }


    /**
     判断一个字符串是否都为数字
     */
    public static boolean isDigit(String strNum) {
        if(TextUtils.isEmpty(strNum))
            return false;
        Pattern pattern = Pattern.compile("[0-9]{1,}");
        Matcher matcher = pattern.matcher((CharSequence) strNum);
        return matcher.matches();
    }


}
public class DirectoriesBean  {
    private Uri photo;
    private String name;
    private String phone;
    private String id;

    public DirectoriesBean(String id, String name, String phone,Uri photo) {
        this.photo = photo;
        this.name = name;
        this.phone = phone;
        this.id = id;
    }

    public DirectoriesBean() {
    }

    public Uri getPhoto() {
        return photo;
    }

    public void setPhoto(Uri photo) {
        this.photo = photo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


    @Override
    public String toString() {
        return "DirectoriesBean{" +
                "photo=" + photo +
                ", name='" + name + '\'' +
                ", phone='" + phone + '\'' +
                ", id='" + id + '\'' +
                '}';
    }}

猜你喜欢

转载自blog.csdn.net/jingzz1/article/details/86539961