安卓获取通讯录app制作

制作获取安卓通讯录的应用程序需要使用Android中的Content Provider机制。Content Provider允许应用程序之间共享数据,并提供数据查询、插入、更新和删除等操作。

以下是实现步骤:

1. 在AndroidManifest.xml文件中声明读取通讯录的权限

```xml

```

2. 创建一个类ContactsHelper,用来获取通讯录数据。这个类主要的作用是查询和获取通讯录的联系人信息。

```java

public class ContactsHelper {

public static List getAllContacts(Context context) {

List contacts = new ArrayList<>();

Cursor cursor = null;

try {

// 查询通讯录的数据

cursor = context.getContentResolver().query(

ContactsContract.Contacts.CONTENT_URI,

null,

null,

null,

ContactsContract.Contacts.DISPLAY_NAME + " ASC"

);

// 处理查询结果

if (cursor != null && cursor.getCount() > 0) {

while (cursor.moveToNext()) {

String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

// 获取通讯录联系人的电话号码

String phoneNumber = "";

Cursor phoneCursor = context.getContentResolver().query(

ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

null,

ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,

null,

null

);

if (phoneCursor != null) {

if (phoneCursor.moveToFirst()) {

phoneNumber = phoneCursor.getString(

phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

}

phoneCursor.close();

}

Contact contact = new Contact(id, name, phoneNumber);

contacts.add(contact);

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (cursor != null) {

cursor.close();

}

}

return contacts;

}

}

```

3. 创建一个联系人实体类Contact,用来封装通讯录中每个联系人的基本信息,如id、姓名和电话号码。

```java

public class Contact {

private String id;

private String name;

private String phoneNumber;

public Contact(String id, String name, String phoneNumber) {

this.id = id;

this.name = name;

this.phoneNumber = phoneNumber;

}

// 省略getters和setters方法

}

```

4. 在MainActivity中调用ContactsHelper类来获取通讯录数据,并将数据传递给RecyclerView使用。

```java

public class MainActivity extends AppCompatActivity {

private RecyclerView mRecyclerView;

private ContactsAdapter mAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mRecyclerView = findViewById(R.id.recycler_view);

mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

mAdapter = new ContactsAdapter();

mRecyclerView.setAdapter(mAdapter);

List contacts = ContactsHelper.getAllContacts(this);

mAdapter.setData(contacts);

}

}

```

5. 创建一个RecyclerView的适配器ContactsAdapter,将通讯录数据显示在RecyclerView中。

```java

public class ContactsAdapter extends RecyclerView.Adapter {

private List mData = new ArrayList<>();

public void setData(List data) {

mData.clear();

if (data != null && data.size() > 0) {

mData.addAll(data);

}

notifyDataSetChanged();

}

@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

View view = LayoutInflater.from(viewGroup.getContext()).inflate(

R.layout.item_contact, viewGroup, false);

return new ViewHolder(view);

}

@Override

public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {

Contact contact = mData.get(i);

viewHolder.mNameTextView.setText(contact.getName());

viewHolder.mPhoneNumberTextView.setText(contact.getPhoneNumber());

}

@Override

public int getItemCount() {

return mData.size();

}

static class ViewHolder extends RecyclerView.ViewHolder {

private TextView mNameTextView;

private TextView mPhoneNumberTextView;

ViewHolder(@NonNull View itemView) {

super(itemView);

mNameTextView = itemView.findViewById(R.id.tv_name);

mPhoneNumberTextView = itemView.findViewById(R.id.tv_phone_number);

}

}

}

```

6. 创建一个item_contact.xml布局文件,用来显示通讯录联系人的基本信息。

```xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:padding="16dp">

android:id="@+id/tv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?attr/textAppearanceLarge"/>

android:id="@+id/tv_phone_number"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?attr/textAppearanceMedium"/>

```

以上就是获取安卓通讯录的应用程序的制作过程,通过使用Content Provider机制和RecyclerView来实现。


相关知识:
安卓10开发模式怎么设置比较流畅
近年来,Android平台的操作系统系统经历了不断的更新和升级,其中最新版本的Android 10在开发模式和性能上都有了非常大的提升和改进。下面将详细介绍如何在Android 10开发模式中设置更加流畅的方法。1.开启开发者选项为了调试和优化您的Andr
2023-05-23
uniapp安卓应用开发 vscode
UniApp是一个非常强大的跨平台应用开发框架,该框架可以用于创建 Android、iOS、H5 等多个平台的应用。而VSCode则是一款轻量级的开源编辑器,它自带了很多丰富的插件和工具,可大大提高开发效率。今天,我们将介绍如何在VSCode中开发UniA
2023-05-23
sqlite数据库开发的基本流程安卓
SQLite是一款轻量级数据库管理系统,广泛应用于移动设备和嵌入式设备等领域。在Android开发中,SQLite数据库也是常用的存储方式之一,本文将介绍SQLite数据库在Android开发中的基本流程。一、准备工作在使用SQLite数据库之前,需要先进
2023-05-23
kotlin安卓开发创建失败
Kotlin 是一种基于 JVM 的静态类型编程语言,它的语法简洁、安全和可读性强,因此很受开发者们的欢迎。在 Android 开发中,Kotlin 也被广泛使用,但有时候创建 Kotlin 安卓项目时可能会遇到创建失败的情况。创建项目失败可能是由多种原因
2023-05-23
java和kotlin开发安卓性能对比
Java和Kotlin是安卓应用开发中最常用的两种语言。尽管在某些方面它们可能类似,但是它们在语言结构和处理方式上有所不同,这会影响应用的性能。在这篇文章中,我们将深入探讨Java和Kotlin在开发安卓应用时的性能差异。1. 语言结构Java是一种静态类
2023-05-23
javafx 开发安卓
JavaFX是一个用于构建富互联网应用程序的框架。它结合了Java平台的强大和易用性,以及现代的图形和多媒体处理能力。与Java Swing不同,JavaFX具有更加现代的组件渲染技术以及更加灵活的布局管理器。在桌面端,它已经成为Java平台上开发桌面应用
2023-05-23
ios开发快还是安卓开发快
iOS和Android是目前两大主流移动操作系统。随着智能手机用户数量的不断增加,两个平台的开发者也越来越多。作为开发者,一个重要的问题就是哪种平台的开发速度更快。本文将从技术原理和开发过程两个方面进行详细介绍。一、技术原理1. 编程语言iOS开发使用的是
2023-05-23
2015年安卓全球开发者大会
2015年安卓全球开发者大会是由Google主办的全球性的技术开发者大会。会议于2015年12月1日至2日在中国上海举行。本次开发者大会主要针对移动应用开发者和安卓系统开发者,为他们提供一个交流学习的平台,让他们能够深入了解关于安卓开发和移动应用创新的最新
2023-05-23
韶关安卓移动app开发
标题:韶关安卓移动APP开发:原理与详细介绍一、简介韶关,作为中国广东省下辖的一个地级市,也在不断地迈入现代化和科技化的发展当中。在这个趋势下,安卓移动APP开发在韶关市也越来越受到关注。本文将详细介绍安卓APP开发的基本原理,并为那些对移动应用开发感兴趣
2023-04-28
安卓app开发者工具
Android开发者工具是一系列工具和资源,用于帮助开发者创建、测试和优化Android应用。下面我们将详细介绍常见的几个安卓开发工具,并阐述它们的原理以及如何使用。1. Android StudioAndroid Studio是Google官方推出的一款
2023-04-28
安卓app开发框架mvp
MVP(Model-View-Presenter) 是一种应用架构模式,常被用来开发 Android 应用程序。MVP 将程序分为三个主要组成模块:模型(Model)、视图(View)和表示器(Presenter)。每个模块都有自己的职责和任务。模型:代表
2023-04-28
安卓app 开发程序
安卓应用程序开发是一个涉及多个方面的过程,主要包括应用的设计、编程、以及发布等环节。以下将详细介绍安卓app开发的基本原理和流程:1. 学习安卓开发的基本知识在开始安卓app开发之前,首先需要学习一些基本的编程知识,如Java或Kotlin(安卓官方推荐的
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1