Android Studio实现通讯录项目

一、项目概述

本次项目主要实现了对联系人信息(姓名和电话)的增加、删除、修改和查询功能,在删除和修改用户前,可以通过姓名搜索到指定联系人的信息,方便用户操作。通过SQLiteDatabase来存储数据,SQLite数据库和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库,功能非常强大,而且使用也很方便快捷。我们下面会详细介绍SQLite数据库。

二、开发环境

开发环境还是老样子哈,Android Studio3.6.1是2020年3月份的最新版,只要这个时间点之后从官网下载安装的都是满足运行条件的。
在这里插入图片描述

三、详细设计

1、主界面的搭建

最外层布局采用线性布局LinearLayout。orientation方向选择的也是vertical垂直排列。下面先是放置了一个小的LinearLayout,里面先放一个文本框来显示标题,再放一个图片框,显示图标。然后不断调整内外边距,找到最合适的位置。

    	<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="通讯录"
            android:textSize="40sp"
            android:textStyle="bold"
            android:textColor="@color/DarkCyan"
            android:layout_margin="20dp"
            android:gravity="center"/>

        <ImageView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:src="@drawable/contact"
            android:layout_marginBottom="10dp"
            android:layout_gravity="center"/>

下面是四个操作按钮,id分别以它们的功能命名,其实四个按钮除了id和text内容不同,其他都是一样的,背景background选择的是写好的btn_selector,在其中设置了按钮的外边框和弧度,而且按钮按下时会有相应的颜色变化。

 		<Button
            android:id="@+id/main_add"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="添加联系人"
            android:gravity="center"
            android:textColor="@color/Honeydew"
            android:background="@drawable/btn_selector"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
        <Button
            android:id="@+id/main_delete"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="删除联系人"
            android:gravity="center"
            android:textColor="@color/Honeydew"
            android:background="@drawable/btn_selector"
            android:textSize="20sp"
            android:layout_margin="10dp"/>
        <Button
            android:id="@+id/main_update"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="修改联系人"
            android:gravity="center"
            android:textColor="@color/Honeydew"
            android:background="@drawable/btn_selector"
            android:textSize="20sp"
            android:layout_margin="10dp"/>

        <Button
            android:id="@+id/main_query"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="查询联系人"
            android:gravity="center"
            android:textColor="@color/Honeydew"
            android:background="@drawable/btn_selector"
            android:textSize="20sp"
            android:layout_margin="10dp"/>

我们看下主界面的示意图:
在这里插入图片描述

2、SQLite数据库

2.1、SQLite是什么?

SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标准SQL语法,还遵循ACID(数据库事务)原则,无需账号,使用起来非常方便!Android内置的SQLite是SQLite 3版本的。

2.2、为什么要用SQLite?

前面我们学习了使用文件与SharedPreference来保存数据,但是在很多情况下,文件并不一定是有效的,如多线程并发访问是相关的;app要处理可能变化的复杂数据结构等等。比如银行的存钱与取钱!使用前两者就会显得很无力或者繁琐,数据库的出现可以解决这种问题,而Android又给我们提供了这样一个轻量级的SQLite,那肯定要好好用啊。

2.3、SQLite有什么特点?

SQLite支持五种数据类型:NULL,INTEGER,REAL(浮点数),TEXT(字符串文本)和BLOB(二进制对象) 虽然只有五种,但是对于varchar,char等其他数据类型都是可以保存的;因为SQLite有个最大的特点:

 你可以将各种数据类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。

比如你可以在Integer类型的字段中存放String字符串,当然除了声明为主键INTEGER PRIMARY KEY的字段只能够存储64位整数。
另外,SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。如下面语句会忽略 name字段的类型信息:

 CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))
SQlite通过文件来保存数据库,一个文件就是一个数据库,数据库中又包含多个表格,表格里又有 多条记录,每个记录由多个字段构成,每个字段有对应的值,每个值我们可以指定类型,也可以不指定 类型(主键除外)

3、SQLite相关的类

3.1、SQLiteOpenHelper

抽象类,我们通过继承该类,然后重写数据库创建以及更新的方法, 我们还可以通过该类的对象获得数据库实例,或者关闭数据库。

3.2、SQLiteDatabase

数据库访问类:我们可以通过该类的对象来对数据库做一些增删改查的操作。最核心的类!

3.3、Cursor

游标,有点类似于JDBC里的resultset,结果集!可以简单理解为指向数据库中某 一个记录的指针。

4、创建数据库与版本管理

Android给我们提供了SQLiteOpenHelper的两个方法:onCreate( )与onUpgrade( )来实现
onCreate(database):首次使用软件时生成数据库表。
onUpgrade(database,oldVersion,newVersion):在数据库的版本发生变化时会被调用, 一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的。

  class MyHelper extends SQLiteOpenHelper{
        public MyHelper(Context context){
            super(context,"dzh.db",null,1);//数据库文件夹名为dzh.db
        }
        //数据库第一次创建时被调用
        @Override
        public void onCreate(SQLiteDatabase db){
            db.execSQL("CREATE TABLE person(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))");
        }
        //软件版本号发生改变时调用
        @Override
        public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){

        }

上述代码第一次启动应用,我们会创建这个dzh.db的文件,并且会执行onCreate()里的方法, 创建一个person的表,它有两个字段:主键personId和name字段;接着如果我们修改db的版本号,那么下次启动就会调用onUpgrade()里的方法,这里我们没有去填写方法,感兴趣的小伙伴可以试一下!这就是创建数据库的模板代码!

5、实现增删改查

本项目使用Android给我们提供的操作数据库的一些API方法,先将它们集成在ContactsDao中,然后在增删改查四个Activity中,直接调用对应方法即可。下面教大家如何使用数据库进行增删改查操作:

  • 首先打开数据库,想要访问数据库,第一步肯定先打开。
	//打开数据库
    public void open() throws SQLException {
        myDBOpenHelper=new MyDBOpenHelper(context);
        try {
            sqLiteDatabase=myDBOpenHelper.getWritableDatabase();
        }catch (SQLException e){
            sqLiteDatabase=myDBOpenHelper.getReadableDatabase();
        }
    }
  • 有开就有关,在操作完数据库后记得关闭数据库。
    //关闭数据库
    public void close(){
        if(sqLiteDatabase!=null){
            sqLiteDatabase.close();
            sqLiteDatabase=null;
        }
    }
  • 添加数据,想要添加数据就是通过values的键值对进行插入数据。
	//添加联系人
    public long addContacts(Contacts c){
        //先创建集合对象
        ContentValues values=new ContentValues();
        //插入键值对
        values.put("name",c.name);
        values.put("phone",c.phone);
        return sqLiteDatabase.insert("contacts",null,values);
    }
  • 删除数据,肯定是根据主键来删除对应的记录,用的是where约束。
  //删除联系人
    public int deleteContacts(Contacts c){
        return sqLiteDatabase.delete("contacts","name=?",new String[]{String.valueOf(c.name)});
    }
  • 修改数据,也是通过where约束找到对应键的记录,然后修改它的其他非键属性。
 	//修改联系人
    public int updateContacts(Contacts c){
        ContentValues value=new ContentValues();
        value.put("phone",c.phone);
        return sqLiteDatabase.update("contacts",value,"name=?",new String[]{String.valueOf(c.name)});
    }
  • 查询数据,使用cursor游标,从第一行遍历到最后一行,在遍历每一行记录中,获得到每个字段的值,这样就获取到所有对象的数据了。
	//根据姓名查找联系人
    public Contacts getContacts(String name){
        Cursor cursor=sqLiteDatabase.query("contacts",null,"name=?",new String[]{name},null,null,null);
        Contacts contacts=new Contacts();
        while(cursor.moveToNext()){
            contacts.name=cursor.getString(cursor.getColumnIndex("name"));
            contacts.phone=cursor.getString(cursor.getColumnIndex("phone"));
        }
        return contacts;
    }

四、项目效果

通讯录的运行演示视频如下:

Android Studio实现一个简单的通讯录

五、项目总结

本次通讯录项目主要考验学生对于SQLite数据库的使用,还是比较基础的,刚接触Android不久的同学只要动手打一遍就掌握了。这些数据库知识点在今后的Android项目中会经常使用,因此希望大家能够熟练掌握SQLite的使用,方便后续开发项目。

六、源码下载

点击右侧链接,即可下载源码:👉Android Studio实现通讯录项目👈

✨还可以关注我的公众号《萌新加油站》,后台回复:通讯录 ,即可获取源码信息


🚀这有你错过的精彩内容🚀
Android Studio实现记事本
Android Studio实现选课系统
Android Studio实现购物商城
Android Studio实现图书管理系统
Android Stduio实现外卖订餐系统

这凡尘到底有什么可留恋的?
原来,都是这些小欢喜啊。
它们在我的生命里唱着歌,跳着舞。
活着,也就成了一件特别让人不舍的事情。
2016.3.12 17:34 YXN

  • 86
    点赞
  • 590
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 88
    评论
### 回答1: Android Studio可以通过使用Content Provider API来访问和管理手机通讯录。Content Provider API是Android平台上的一种机制,它允许应用程序共享数据,并提供了一种标准化的方式来访问和管理数据。要访问手机通讯录,您需要使用ContactsContract类和相关的类来查询和更新通讯录数据。您可以使用这些类来获取联系人的姓名、电话号码、电子邮件地址等信息,并将其显示在您的应用程序中。同时,您还可以使用这些类来添加、删除和更新联系人信息。 ### 回答2: Android Studio是一个主要用于Android移动应用程序开发的集成开发环境(IDE),提供了许多工具和功能,帮助开发人员快速和高效地创建各种类型的Android应用程序。一种常见的应用程序类型是通讯录应用程序,它用于保存和管理联系人列表。 Android Studio提供了许多可以用于开发通讯录应用程序的工具和API。以下是几个重要的方面: 1. UI设计:Android Studio支持使用布局编辑器来设计应用程序的用户界面。开发人员可以使用各种预定义控件(如文本框,列表和按钮)以及自定义视图来构建应用程序的UI。 2. 数据存储:Android Studio提供了SQLite数据库,可用于存储通讯录中的联系人信息。开发人员可以使用SQLiteDatabase API执行各种数据库操作,例如创建表格,插入和更新数据以及查询数据。 3. 呼叫和短信:Android Studio提供了TelephonyManager API,可用于执行与手机通讯相关的操作,例如获取手机状态,获取电话号码以及拨打电话或发送短信。 4. 权限管理:开发人员必须确保App拥有所需的应用程序权限,例如访问联系人列表和拨号功能。Android Studio提供了PackageManager API和运行时权限框架,使开发人员可以管理应用程序的权限。 5. 通讯录同步:通讯录应用程序应该能够与其他设备同步,以确保在多个设备之间共享联系人信息。Android Studio提供了SyncAdapter API和帐户管理器,可用于实现该功能。 总之,Android Studio是开发通讯录应用程序的理想工具,它提供了许多用于构建通讯录应用程序所需的API。开发人员可以使用这些工具和API快速构建高质量的通讯录应用程序,以便用户可以方便地管理联系人信息。 ### 回答3: android studio 手机通讯录,是指应用程序开发人员使用android studio开发工具,针对Android手机的通讯录功能进行开发。通过这个应用程序,用户可以方便地使用手机通讯录,查看、新增、修改和删除联系人信息等。 在开发过程中,首先需要了解Android系统中的通讯录架构。Android通讯录是一个分层的结构,分为两个部分:Contacts Storage和Contacts Provider。Contacts Storage是通讯录的存储引擎,负责管理和保存通讯录的数据。Contacts Provider是通讯录的服务提供者,它是一个接口,提供通讯录数据的操作方法,如查询、新增、修改和删除等。 在使用android studio开发手机通讯录应用程序时,可以使用系统提供的Contacts Provider接口来完成相关操作。在使用Contacts Provider之前需要授权,然后使用ContentResolver来访问Contacts Provider提供的接口。ContentResolver提供了常用的操作方法,如查询、新增、修改和删除等。 在开发过程中还需要使用一些相关的组件和布局,如ListView、Adapter、Layout等。ListView是一个常用的列表组件,可以用来显示通讯录中的联系人列表。Adapter用于将通讯录数据适配到ListView中。Layout用于设计通讯录界面的布局。 总之,android studio 手机通讯录是一个基于Android系统的应用程序,它可以方便地使用手机通讯录功能,提供了相关的操作方法和界面设计布局。开发者可以使用Android SDK提供的Contacts Provider接口、ListView、Adapter、Layout等相关的组件和布局来完成应用程序的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 88
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振华OPPO

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值