android通讯录实例(一)

放假期间想要写一些博客了,算是开博了吧,从android开发开始吧,以后慢慢的把做过的一些项目中的知识点整理及算法的心得写到博客上。

进入正题,本篇博客的目的是写一个通讯录,可以扫描到系统内置数据库,并提供搜索功能,以及根据联系人字母或拼音通过右方导航条导航到联系人,并提供联系人导出功能,这个功能的添加也是因为我要格式化我的手机一次,但是要备份的需求添加进去的。

整体代码我会在文末给出链接.

我也参考了网上的一些代码,但是很少有能实现功能的,原因可能是代码比较老了,无法实现效果的原因,我将代码更新并且加入了一些新的功能,具体功能如下:

  1. 检索手机存入联系人并显示
  2. 右侧导航条根据拼音字母检索联系人
  3. 通过搜索栏实时搜索联系人
  4. vCard格式导出并发送分享功能
  5. 检测系统通讯录是否有变化,有变化在通知栏通知,并更新联系人列表功能
效果图如下:

效果界面




导出

发送

用到如下知识点:

  1. 自定义listview的实现(使用开源项目indexableListView,我们主要来分析这个listview)
  2. 调用android联系人数据库并进行排序
  3. 自定义dialog
  4. ...
开篇先把最基本的界面部分展示出来:

由于用到开源项目indexableListView,我们可以先把代码下载下来放到我们的项目中,在github上下载:点击打开链接

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/top"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@drawable/top_background"
        android:paddingLeft="10dp"
        android:paddingRight="10dp">

        <Button
            android:id="@+id/btnExported"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:background="@drawable/search_btn_background"
            android:gravity="center"
            android:text="导出"
            android:textSize="12sp"
            android:textStyle="bold" />

        <RelativeLayout
            android:id="@+id/rlSearchFrameDelete"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@id/btnExported"
            android:gravity="center_vertical">

            <EditText
                android:id="@+id/etSearch"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:background="@drawable/search_frame"
                android:hint="请输入文字..."
                android:paddingLeft="32dp"
                android:singleLine="true"
                android:textSize="12sp" />

            <ImageView
                android:id="@+id/ivDeleteText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerInParent="true"
                android:paddingRight="20dp"
                android:src="@drawable/delete"
                android:visibility="gone" />

        </RelativeLayout>

    </RelativeLayout>

    <com.woozzu.android.widget.IndexableListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>
其中ivDeleteText是只点击edittext文本框后如果想把文本框中文字全部清除的时候点击的图标,开始为隐藏状态,当有文字输入时才会显示出来.

下面是本项目的联系人模型类:包括联系人姓名(contact_name),联系人索引key(sortKey),联系人号码(contact_phone),联系人id(contect_id)及联系人email(email),如果大家有其它想要展示的属性,可以添加在里面

package com.woozzu.android.model;

/**
 * Created by han on 15-11-27.
 */
public class ContactMember {

    private String contact_name;
    private String sortKey
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值