Android官方API Demo学习之联系人获取

来源:互联网 发布:易语言统计成绩源码 编辑:程序博客网 时间:2024/04/19 22:17

Android官方API Demo学习之联系人获取

/** * Android API Demos之获取手机联系人 *  * @description: * @author ldm * @date 2016-4-19 上午10:28:27 */public class MainActivity extends ListActivity {    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {            Contacts._ID, // 联系人ID            Contacts.DISPLAY_NAME, // 联系人展示名            Contacts.STARRED, // 表示该联系人是用星号标记的,即favorite的联系人;0表示没有用星号标记            Contacts.TIMES_CONTACTED, // 联系人被联系的次数            Contacts.CONTACT_PRESENCE, // 联系人呈现出来的状态,如离线、在线、忙碌等状态            Contacts.PHOTO_ID, // 联系人头像id            Contacts.LOOKUP_KEY, // 联系人的查询键            Contacts.HAS_PHONE_NUMBER, // 0or1:如果值为1,则该联系人至少有一个电话号码;如果值为0,则该联系人没有电话号码    };    static final int SUMMARY_ID_COLUMN_INDEX = 0;    static final int SUMMARY_NAME_COLUMN_INDEX = 1;    static final int SUMMARY_STARRED_COLUMN_INDEX = 2;    static final int SUMMARY_TIMES_CONTACTED_COLUMN_INDEX = 3;    static final int SUMMARY_PRESENCE_STATUS_COLUMN_INDEX = 4;    static final int SUMMARY_PHOTO_ID_COLUMN_INDEX = 5;    static final int SUMMARY_LOOKUP_KEY = 6;    static final int SUMMARY_HAS_PHONE_COLUMN_INDEX = 7;    @SuppressWarnings("deprecation")    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND ("                + Contacts.HAS_PHONE_NUMBER + "=1) AND ("                + Contacts.DISPLAY_NAME + " != '' ))";        Cursor c = getContentResolver().query(Contacts.CONTENT_URI,                CONTACTS_SUMMARY_PROJECTION, select, null,                Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");        startManagingCursor(c);        ContactListItemAdapter adapter = new ContactListItemAdapter(this,                R.layout.item_layout, c);        setListAdapter(adapter);    }    /**     * 继承ResourceCursorAdapter通过指定一个定义了视图UI的XML文件来创建视图。     *      * @description:     * @author ldm     * @date 2016-4-19 上午10:28:39     */    private final class ContactListItemAdapter extends ResourceCursorAdapter {        public ContactListItemAdapter(Context context, int layout, Cursor c) {            super(context, layout, c, true);        }        /**         * 给View设置数据         */        @Override        public void bindView(View view, Context context, Cursor cursor) {            final ViewHolder cache = (ViewHolder) view                    .getTag();            //在缓冲区中检索请求的列的文本,将将其存储            cursor.copyStringToBuffer(SUMMARY_NAME_COLUMN_INDEX,                    cache.nameBuffer);            int size = cache.nameBuffer.sizeCopied;            cache.nameView.setText(cache.nameBuffer.data, 0, size);            final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);            final String lookupKey = cursor.getString(SUMMARY_LOOKUP_KEY);            cache.photoView.assignContactUri(Contacts.getLookupUri(contactId,                    lookupKey));        }        /**         * 根据指定的xml文件创建视图         */        @Override        public View newView(Context context, Cursor cursor, ViewGroup parent) {            View view = super.newView(context, cursor, parent);            ViewHolder cache = new ViewHolder();            cache.nameView = (TextView) view.findViewById(R.id.name);            cache.photoView = (QuickContactBadge) view.findViewById(R.id.badge);            view.setTag(cache);            return view;        }    }    final static class ViewHolder {        public TextView nameView;        public QuickContactBadge photoView;        public CharArrayBuffer nameBuffer = new CharArrayBuffer(128);    }}

item布局:

    <QuickContactBadge        android:id="@+id/badge"        style="?android:attr/quickContactBadgeStyleWindowSmall"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginBottom="3dip"        android:layout_marginLeft="2dip"        android:layout_marginRight="14dip"        android:layout_marginTop="4dip"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_centerVertical="true"        android:layout_toRightOf="@id/badge"        android:paddingLeft="2dip"        android:textAppearance="?android:attr/textAppearanceMedium" /></RelativeLayout>
0 0
原创粉丝点击