Android手机通讯录制作

这篇具有很好参考价值的文章主要介绍了Android手机通讯录制作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要求

设计一个基于Android的手机通讯录,此通讯录包括添加、搜索、修改、删除联系人的功能。

  1. 添加、编辑、删除功能
    点击通讯录主界面选项菜单中的“添加联系人”菜单项,进入添加联系人界面,输入联系人的基本信息,包括姓名、手机号码、家庭地址、单位名称、Email、QQ号这些信息,姓名和手机号码必须不为空,且唯一。点击通讯录中一个已存在的联系人,进入编辑界面,可修改联系人的资料或进行删除操作,完成后返回到主界面。
  2. 查找联系人
    点击通讯录选项菜单中的“查找联系人”菜单项,进入搜索界面,能通过姓名、手机号码、单位名称等信息查找联系人,将所有符合查询条件的联系人通过列表控件显示。
  3. 快捷菜单功能
    在联系人主界面上长按一个已存在的联系人,能弹出一个快捷菜单,菜单项包括拨打电话、发送短信、修改联系人、删除联系人。点击菜单项能跳转到相应的界面。

样图展示

Android手机通讯录制作

代码

1.创建数据库

/**
 * 创建一个数据库类继承
 * 通过创建子类MyDatabaseHelper继承SQLiteOpenHelper类,实现它的一些方法来对数据库进行操作。
 * 变量用常量表示规范,常量一般大写
 */
public class MyDatabaseHelper extends SQLiteOpenHelper {

    private Context context;
    private static final String DATABASE_NAME = "phone_contacts.db";//定义一个常量名命这个数据库为phone db是一个扩展;
    private static final int DATABASE_VERSION = 1;//定义一个数据库版本,是一个整数类型;
    private static final String TABLE_NAME = "contact";//定义一个表名;
    //需要定义标题
    private static final String CONTACT_ID = "phone_id";//序列
    private static final String CONTACT_NAME = "phone_name";//名字
    private static final String CONTACT_PHONE = "phone_phone";//电话
    private static final String CONTACT_ADDRESS = "phone_address";//地址
    private static final String CONTACT_UNIT = "phone_unit";//单位名称
    private static final String CONTACT_EMAIL = "phone_email";//Email
    private static final String CONTACT_QQ = "phone_qq";//QQ号码

    /*
    构造函数
    要传上下文和名字以及工厂还有一个版本,
     */
    public MyDatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    /*
    第一次创建数据库的时候使用回调方法
    数据出第一次创建的时候才会被调用,其他时候不会再调用了,只调用一次
    创建contact表
    id,name,phone,address,unit,,email,qq;
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据表
        String query =
                " CREATE TABLE " + TABLE_NAME +
                        " ( " + CONTACT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        CONTACT_NAME + " TEXT, " +
                        CONTACT_PHONE + " TEXT, " +
                        CONTACT_ADDRESS + " TEXT, " +
                        CONTACT_UNIT + " TEXT, " +
                        CONTACT_EMAIL + " TEXT, " +
                        CONTACT_QQ + " TEXT); ";
        //执行SQL
        db.execSQL(query);
    }

## 如何插入一段漂亮的代码片

去[博客设置](https://mp.csdn.net/console/configBlog)页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 `代码片`.
```javascript
// An highlighted block
var foo = 'bar';

2.主界面

MainActivity
public class MainActivity extends AppCompatActivity {
    private SearchView searchView;
/*
创建一个RecoverySystem对象和浮动操作按钮
 */
    RecyclerView recyclerView;
    FloatingActionButton add_button;
    //初始化我的数据库类
    MyDatabaseHelper myDB = new MyDatabaseHelper(MainActivity.this);
    //创建6个不同的数组列表一边这些数组列表将包含字符串,因此第一个是
    //phone_id、phone_name、phone_phone、phone_address、phone_unit、phone_email、phone_qq
    ArrayList<String> phone_id,phone_name,phone_phone,phone_address,phone_unit,phone_email,phone_qq;
    CustomAdapter customAdapter;
    CardView cardView;
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
        super.onActivityResult(requestCode,resultCode,data);
        if (requestCode == 1){
            recreate();
        }
    }
    public void displayData(){
        Cursor cursor = myDB.readAllData();
        if (cursor.getCount() == 0){
            Toast.makeText(this, "没有数据可以显示", Toast.LENGTH_SHORT).show();
        }else{
            while (cursor.moveToNext()){
                phone_id.add(cursor.getString(0));
                phone_name.add(cursor.getString(1));
                phone_phone.add(cursor.getString(2));
                phone_address.add(cursor.getString(3));
                phone_unit.add(cursor.getString(4));
                phone_email.add(cursor.getString(5));
                phone_qq.add(cursor.getString(6));
            }
        }
    }
 }
CustomAdapter.java

创建适配器界面用于显示主页面数据文章来源地址https://www.toymoban.com/news/detail-482994.html

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
    private Context context;
    Activity activity;
    EditText pt_name1, pt_phone1, pt_address1, pt_unit1, pt_email1, pt_qq1;
    private ArrayList phone_id, phone_name, phone_phone, phone_address,
            phone_unit, phone_email, phone_qq;

    CustomAdapter(Activity activity,
                  Context context,
                  ArrayList phone_id,
                  ArrayList phone_name,
                  ArrayList phone_phone,
                  ArrayList phone_address,
                  ArrayList phone_unit,
                  ArrayList phone_email,
                  ArrayList phone_qq) {
        this.activity = activity;
        this.context = context;
        this.phone_id = phone_id;
        this.phone_name = phone_name;
        this.phone_phone = phone_phone;
        this.phone_address = phone_address;
        this.phone_unit = phone_unit;
        this.phone_email = phone_email;
        this.phone_qq = phone_qq;
    }

 @Override
    public int getItemCount() {
        return phone_id.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView phone_id_txt, phone_name_txt, phone_phone_txt, phone_address_txt;
        LinearLayout mainLayout;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            phone_id_txt = itemView.findViewById(R.id.phone_id_txt);
            phone_name_txt = itemView.findViewById(R.id.phone_name_txt);
            phone_phone_txt = itemView.findViewById(R.id.phone_phone_txt);
            phone_address_txt = itemView.findViewById(R.id.phone_address_txt);
            pt_name1 = itemView.findViewById(R.id.pt_name1);
            pt_phone1 = itemView.findViewById(R.id.pt_phone1);
            pt_address1 = itemView.findViewById(R.id.pt_address1);
            pt_unit1 = itemView.findViewById(R.id.pt_unit1);
            pt_email1 = itemView.findViewById(R.id.pt_email1);
            pt_qq1 = itemView.findViewById(R.id.pt_qq1);
            mainLayout = itemView.findViewById(R.id.mainLayout);
        }
    }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="414dp"
        android:layout_height="674dp"
        android:layout_marginTop="52dp"

        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.666"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/add_button"
        android:layout_width="57dp"
        android:layout_height="55dp"
        android:layout_marginEnd="44dp"
        android:layout_marginBottom="84dp"
        android:clickable="true"
        android:focusable="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:srcCompat="@drawable/ic_baseline_add_24" />

    <SearchView
        android:id="@+id/searchview"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="2dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

3.添加联系人

//创建一个添加方法addPhone()
    //将创建SQLite数据库对象,这样只需要名命该数据库,使用一个关键字,指向SQLite开放式帮助类
    //helper类,获取可写入的数据库
    public void addPhone(String name, String phone, String address, String unit, String email, String qq) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(CONTACT_NAME, name);
        cv.put(CONTACT_PHONE, phone);
        cv.put(CONTACT_ADDRESS, address);
        cv.put(CONTACT_UNIT, unit);
        cv.put(CONTACT_EMAIL, email);
        cv.put(CONTACT_QQ, qq);
        long result = db.insert(TABLE_NAME, null, cv);
        if (result == -1) {
            Toast.makeText(context, "保存失败", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(context, "保存成功!", Toast.LENGTH_SHORT).show();
        }
    }
AddContacts.java(添加界面)
public class AddContacts extends AppCompatActivity {
    private EditText et_name,et_phone,et_address,et_unit,et_email,et_qq;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_contacts);
        init();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MyDatabaseHelper myDB = new MyDatabaseHelper(AddContacts.this);
                myDB.addPhone(et_name.getText().toString().trim(),
                        et_phone.getText().toString().trim(),
                        et_address.getText().toString().trim(),
                        et_unit.getText().toString().trim(),
                        et_email.getText().toString().trim(),
                        et_qq.getText().toString().trim());
            }
        });
    }

    private void init(){
        et_name = findViewById(R.id.pt_name);
        et_phone = findViewById(R.id.pt_phone);
        et_address = findViewById(R.id.pt_address);
        et_unit = findViewById(R.id.pt_unit);
        et_email = findViewById(R.id.pt_email);
        et_qq = findViewById(R.id.pt_qq);
        button = findViewById(R.id.button);
    }
}
addactivity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".AddContacts">

    <EditText
        android:id="@+id/pt_name"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="150dp"
        android:ems="10"
        android:hint="请输入姓名"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.683"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/pt_phone"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:hint="请输入电话号码"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.689"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_name" />

    <EditText
        android:id="@+id/pt_address"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:hint="请输入家庭地址"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.689"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_phone" />

    <EditText
        android:id="@+id/pt_unit"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:hint="请输入单位名称"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.683"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_address" />

    <EditText
        android:id="@+id/pt_email"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:hint="请输入Email"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.683"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_unit" />

    <EditText
        android:id="@+id/pt_qq"
        android:layout_width="250dp"
        android:layout_height="40dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:hint="请输入QQ号码"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.683"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pt_email" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="150dp"
        android:layout_marginEnd="15dp"
        android:gravity="center"
        android:text="@string/tv_name"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_name"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:gravity="center"
        android:layout_marginStart="16dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="15dp"
        android:text="@string/tv_phone"
        android:textAlignment="center"
        android:textDirection="locale"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_phone"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:gravity="center"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="15dp"
        android:text="@string/tv_address"
        android:textAlignment="center"
        android:textDirection="locale"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_address"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="30dp"
        android:gravity="center"
        android:layout_marginEnd="15dp"
        android:text="@string/tv_unit"
        android:textAlignment="center"
        android:textDirection="locale"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_unit"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="15dp"
        android:gravity="center"
        android:text="@string/tv_email"
        android:textAlignment="center"
        android:textDirection="locale"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_email"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="15dp"
        android:gravity="center"
        android:text="@string/tv_QQ"
        android:textAlignment="center"
        android:textDirection="locale"
        android:textStyle="bold"
        app:layout_constraintEnd_toStartOf="@+id/pt_qq"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView5" />

    <Button
        android:id="@+id/button"
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="56dp"
        android:text="@string/btn_button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.454"
        app:layout_constraintStart_toStartOf="parent" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="360dp"
        android:layout_height="142dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.509"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/qq1" />
</androidx.constraintlayout.widget.ConstraintLayout>

到了这里,关于Android手机通讯录制作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于java的Android手机通讯录【详细】【完整代码】

    提示:代码在基本模块中,教程纯文字,推荐两个屏幕一边看代码一边看教程 简易Android通讯录系统,只要半天就能写完! (博主安卓一些功能用的不熟练) 需要掌握学习的知识点: 1、基本的UI界面编写。 2、Intent的基本使用。 3、Menu的基本使用。 4、RecyclerView的基本使用。

    2024年02月09日
    浏览(28)
  • Android Studio初学者实例:ContentProvider读取手机通讯录

    该实验是通过ContentProvider读取手机通讯录 知识点包含了RecyclerView控件、UriMatcher、ContentResolver 先看效果,显示手机通讯录  首先是界面的布局代码 activity_main59.xml 其次是RecyclerView的item布局代码,其中使用了CardView是为了方便快捷的弄个圆角储来 main59_item.xml 一个联系人的实体

    2024年02月03日
    浏览(36)
  • Android之抓取短信,所有应用信息,通讯录,通话记录,手机系统相册图片

    一般我们做金融APP会遇到风控需求,需要获取用户手机短信,手机所有安装应用信息,通讯录,通话记录等功能,接下来我们看看怎么做,一篇文章解决所有! 这里我只需要这些字段,需要更多自己添加 1.kotlin 2.java 1.kotlin 2.Java 1.kotlin 2.Java 这篇文章比较长,懒得分开成几篇

    2024年02月16日
    浏览(27)
  • 简单步骤:Android studio 内容提供者 - 实现建立手机通讯录界面,读取系统联系人

    提示:本篇文章将会尽量保持精简,同时请诸位敲写代码时保持耐心,三连是最大的支持! 文章目录 前言 一、项目介绍 二、使用步骤 1.创建程序 2.添加 recyclerview-v7 库 3.放置界面控件 4.搭建界面布局 5.封装实体类 6.编写数据适配器 7.实现显示界面数据功能 8.去掉默认标题栏

    2024年02月08日
    浏览(31)
  • AndroidStudio课程设计-通讯录系统(高分毕设,Android期末作业,Android课设,AndroidStudio)

    博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月04日
    浏览(38)
  • python-手机通讯录

    手机通讯录 通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式等信息,也可以在其中新增联系人,或修改、删除联系人信息。 本实例要求编写程序,实现具备添加、查看、修改以及删

    2024年02月06日
    浏览(42)
  • 手机通讯录 python

    person_info = [] print(“=” * 20) print(‘欢迎使用通讯录:’) print(“1.添加联系人”) print(“2.查看通讯录”) print(“3.删除联系人”) print(“4.修改联系人信息”) print(“5.查找联系人”) print(“6.退出”) print(“=” * 20) while True: per_dict = {} fun_num = input(‘请输入功能序号:’) if fun_num

    2024年02月06日
    浏览(26)
  • 通讯录文件如何导入手机简单方法

    今天要和大家分享的是,如何将通讯录文件导入华为手机。最简单的方法是直接通过微信或QQ将通讯录文件传输到手机之上,而不需要使用第三方工具。。 通讯录文件指的是vCard文件,也称为vcf文件。通常是手机和通讯录工具导出的文件。可以很方便地导入到其他手机之上。

    2024年02月16日
    浏览(27)
  • c++手机通讯录管理系统280

    定制魏:QTWZPW,获取更多源码等 目录 软件达到的目的 功能分析说明图  各项功能说明  主要数据结构类型  各个模块之间的调用关系和数据储存格式说明  各软件模块之间的调用方式  软件中实现各项功能的函数与程序主要代码  软件使用结果  添加联系人 显示联系人 拨

    2024年04月12日
    浏览(46)
  • 苹果手机怎么恢复通讯录联系人

    随着社交媒体和移动互联网的快速发展,手机已经成为我们日常生活不可或缺的一部分。在手机中,通讯录联系人是我们很重要的一部分数据,这些联系人包括亲友、同事、客户等等。但有时候,由于各种原因,我们可能会不小心删除或者丢失这些重要的联系人信息。这时候

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包