Android实现通讯录功能

本文实例为大家分享了Android通讯录案例,供大家参考,具体内容如下

实战演练——通讯录

1、功能描述:通过SQLite实现数据库的增删改查

2、技术要点:SQLite的基本操作

3、实现步骤:

① 创建一个类继承SQLiteOpenHelper
② 重写父类构造方法、onCreate()、onUpgrade()
③ 增删改查

4、效果图

5、案例代码

MyHelper.java

package com.example.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class MyHelper extends SQLiteOpenHelper {
  public MyHelper(@Nullable Context context) {
    super(context, "test.db", null, 1);
  }

  //当数据库第一次创建的时候执行
  @Override
  public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT ,name VARCHAR(20),phone VARCHAR(20))");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  }
}

MainActivity.java

package com.example.sqlite;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  private TextView name;
  private TextView phone;
  private Button btnAdd;
  private Button btnDel;
  private Button btnUqd;
  private Button btnSel;
  private String uPhone;
  private String uName;
  private MyHelper myHelper;
  private SQLiteDatabase db;
  private TextView show;
  private ContentValues contentValues;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myHelper = new MyHelper(this);
    init();
  }

  private void init() {
    show = findViewById(R.id.show);
    name = findViewById(R.id.name);
    phone = findViewById(R.id.phone);
    btnAdd = findViewById(R.id.insert);
    btnDel = findViewById(R.id.delete);
    btnUqd = findViewById(R.id.update);
    btnSel = findViewById(R.id.select);
    btnAdd.setOnClickListener(this);
    btnDel.setOnClickListener(this);
    btnUqd.setOnClickListener(this);
    btnSel.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.select:
        db = myHelper.getReadableDatabase();
        Cursor cursor = db.query("information", null, null, null, null, null, null);
        if (cursor.getCount() == 0) {
          Toast.makeText(this, "没有数据", Toast.LENGTH_LONG).show();
        } else {
          cursor.moveToFirst();
          show.setText("Name:" + cursor.getString(1) + "Tel:" + cursor.getString(2));
        }
        while (cursor.moveToNext()) {
          show.append("\n" + "Name" + cursor.getString(1) + "Tel" + cursor.getString(2));
        }
        cursor.close();
        db.close();
        break;
      case R.id.insert:
        uName = name.getText().toString();
        uPhone = phone.getText().toString();
        db = myHelper.getReadableDatabase();
        contentValues = new ContentValues();
        contentValues.put("name", uName);
        contentValues.put("phone", uPhone);
        db.insert("information", null, contentValues);
        db.close();
        break;
      case R.id.update:
        db = myHelper.getReadableDatabase();
        contentValues = new ContentValues();
        contentValues.put("phone", uPhone = phone.getText().toString());
        db.update("information", contentValues, "name=?", new String[]{name.getText().toString()});
        db.close();
        break;
      case R.id.delete:
        db = myHelper.getReadableDatabase();
        db.delete("information", null, null);
        Toast.makeText(this, "信息已经删除", Toast.LENGTH_LONG).show();
        show.setText("");
        db.close();
        break;
    }
  }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
  android:background="@drawable/background">
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      >

      <ImageView
        android:layout_width="160dp"
        android:layout_height="120dp"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="20dp"
        android:src="@drawable/expression"></ImageView>
      <ImageView
        android:layout_width="160dp"
        android:layout_height="120dp"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="20dp"
        android:src="@drawable/text"></ImageView>
    </LinearLayout>
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:layout_marginTop="20dp"
      android:paddingHorizontal="20dp"
      >
      <TextView

        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="姓 名 :"
        android:textSize="26sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
      <EditText
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="wrap_content"
        android:hint="请输入姓名"
        android:textSize="22sp"
        ></EditText>

    </LinearLayout>
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:layout_marginTop="20dp"
      android:paddingHorizontal="20dp"
      >
      <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="电 话 :"
        android:textSize="26sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
      <EditText
        android:id="@+id/phone"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="wrap_content"
        android:hint="请输入手机号码"
        android:textSize="22sp"
        ></EditText>

    </LinearLayout>
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:layout_marginTop="20dp"
      android:paddingHorizontal="20dp"
      >
      <Button
        android:id="@+id/insert"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="增加"
        android:textSize="26sp"
        ></Button>
      <Button
        android:id="@+id/select"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="查询"
        android:textSize="26sp"
        ></Button>
      <Button
        android:id="@+id/update"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="修改"
        android:textSize="26sp"
        ></Button>
      <Button
        android:id="@+id/delete"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="删除"
        android:textSize="26sp"
        ></Button>
    </LinearLayout>
    <TextView
      android:id="@+id/show"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:textSize="18sp"
      android:background="#80ffffff"
      android:layout_marginHorizontal="20dp"

      ></TextView>
  </LinearLayout>
</RelativeLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android读取手机通讯录联系人到自己项目

    本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一.主界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientat

  • Android个人手机通讯录开发详解

    一.Android 个人手机通讯录开发 数据存储:SQLite 数据库 开发工具:Android Studio 二.Phone Module 简介 1. 界面展示 2. 文件结构简单分析 三.个人手机通讯录代码实现 1. 清单文件 (AndroidManifest.xml) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.andr

  • 使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

  • Android实现仿通讯录侧边栏滑动SiderBar效果代码

    本文实例讲述了Android实现仿通讯录侧边栏滑动SiderBar效果代码.分享给大家供大家参考,具体如下: 之前看到某些应用的侧边栏做得不错,想想自己也弄一个出来,现在分享出来,当然里面还有不足的地方,请大家多多包涵. 先上图: 具体实现的代码如下: package com.freesonfish.listview_index; import android.content.Context; import android.graphics.Canvas; import android.grap

  • Android破解微信获取聊天记录和通讯录信息(静态方式)

    一.猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用,已经替代了传统的短信聊天方式了,只要涉及到聊天就肯定有隐私消息,那么本文就来讲解如何获取微信的聊天记录以及通讯录信息. 首先我们在没有网络的时候,打开微信同样可以查看聊天记录,说明微信会把聊天记录保存到本地,那么这么多信息肯定会保存在数据库中,所以我们可以去查看微信的databases目录看看内容: 可惜的是,我们在这个里面并没有发现一些有用的数据,所以这时候就了解到了微信因为把重要信息的数据库存在其他目录下面,我们可以直接把微信的整个

  • Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    android获取手机通讯录联系人信息 复制代码 代码如下: private void getPhoneContacts() {        ContentResolver resolver = this.getContentResolver();                // 获取手机联系人       Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,                  new String[] { Phone

  • Android仿微信通讯录打造带悬停头部的分组列表(上)

    一 概述 本文是Android导航分组列表系列上,因时间和篇幅原因分上下,最终上下合璧,完整版效果如下: 上部残卷效果如下:两个ItemDecoration,一个实现悬停头部分组列表功能,一个实现分割线(官方demo) 网上关于实现带悬停分组头部的列表的方法有很多,像我看过有主席的自定义ExpandListView实现的,也看过有人用一个额外的父布局里面套 RecyclerView/ListView+一个头部View(位置固定在父布局上方)实现的. 对于以上解决方案,有以下几点个人觉得不好的地方

  • android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)

    前言: 仿微信通讯录搜索功能,通过汉字或拼音首字母找到匹配的联系人并显示匹配的位置 一:先看效果图 字母索引 搜索匹配 二:功能分析 1:汉字转拼音 通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现在转换拼音常见的有pinyin4j和tinypinyin, pinyin4j的功能强大,包含声调多音字,tinypinyin执行快占用内存少, 如果只是简单匹配通讯录,建议使用tinypinyin,用法也很简单这里不详细介绍 拼音类 public class CNPinyin <T extends

  • Android实现通讯录效果——获取手机号码和姓名

    首先给大家展示下运行效果图: 由于通讯录在手机里是以数据库贮存的 所以我们可以通过一个方法 context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 来获得通讯录 ,这个方法返回一个游标的数据类型,通过moveToNext()方法来获取所有的手机号码信息 当然读取手机通讯录需要权限 在adnroidManifest文件中声明即可 由于我也实现了打电话的功能 所以也要声明权限 <uses-permi

  • Android通讯录开发之删除功能的实现方法

    无论是Android开发或者是其他移动平台的开发,ListView肯定是一个大咖,那么对ListView的操作肯定是不会少的,上一篇博客介绍了如何实现全选和反选的功能,本篇博客介绍删除功能,删除列表中的项无谓就是及时刷新列表,这又跟UI线程扯上关系了,还是那句话,数据的更新通知一定要在UI线程上做,不然会出现各种错误,比如出现adapter数据源改变,但没有及时收到通知的情况.在执行遍历删除的时候,最好不要每删一个就直接通知,下面是我的实现方法,将需要删除的contact保存到一个List然后通

随机推荐