安卓获取通讯录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来实现。


相关知识:
安庆市开发区卓群机电经营部
安庆市开发区卓群机电经营部是一家专业从事机电设备销售和技术服务的企业。该公司成立于2005年,位于中国安徽省安庆市开发区华美路68号,注册资金100万元。公司主要经营物料处理设备、输送设备、节能环保设备、气动元件、液压元件、紧固件等机电设备及其配件。在机电
2023-05-23
安徽安卓系统app定制开发报价方案
亲爱的客户,感谢您对我们公司的关注与信任,以下是我们对于安卓系统app定制开发的详细介绍与报价方案。一、什么是安卓系统app定制开发?安卓系统app定制开发是指根据客户的需求和要求,定制化开发出符合客户需求的安卓应用程序。一般而言,定制开发的安卓应用程序不
2023-05-23
vstudio安卓开发
在过去,开发安卓应用程序需要使用Java或Kotlin等编程语言。但是,现在使用Visual Studio(VS)可以快速简便地创建安卓应用程序。VS是一个功能强大的工具,支持多种编程语言。为什么我们要使用VS进行安卓开发呢?首先,VS为我们提供了一个友好
2023-05-23
手机app安卓是什么语言开发的
安卓手机应用程序是使用Java编程语言编写的。Java是一种面向对象的编程语言,用于编写可移植的应用程序。Android早期的设计是在Dalvik虚拟机上运行Java语言编写的代码,而现在Android使用了ART(Android Runtime)虚拟机。
2023-04-28
开发app不支持安卓8
在本篇文章中,我们将详细讨论为什么某些应用程序无法在Android 8(Oreo)上运行,以及为了让这些应用程序兼容新版本系统开发者需要注意哪些事项。作为一款具有丰富功能和改进的操作系统,Android 8及更高版本为用户带来了更好的体验,但随之而来的,也
2023-04-28
安卓开发桌面宠物app源代码
桌面宠物是一种非常流行的应用程序类型,它可以在用户的桌面上呈现一个可爱的动态图像,它会做出各种有趣的动作和回应用户的操作。下面我们来介绍如何开发一个 Android 桌面宠物 app。一、功能需求我们需要实现以下功能:1. 在用户桌面上显示一个可爱的宠物图
2023-04-28
安卓小说阅读器app开发
在这篇文章中,我们将探讨如何开发一个简单的Android小说阅读器App。通过这个教程,您将了解整个开发过程以及用到的一些关键技术。编写小说阅读器App涉及到Android开发的基础知识,例如布局设计、自定义控件、网络请求等等。1. 准备工作首先,在你的电
2023-04-28
安卓app开发的参考文献
以下是一些安卓app开发的参考文献,涵盖了一些原理和详细介绍:1. 《第一行代码:Android》(郭霖著):本书是一本从零开始学习安卓开发的入门书籍,分享设计并实现简单的安卓应用程序的基础知识,以及许多工具和技巧的使用。2. 《Android移动开发从入
2023-04-28
安卓app 打包工具
安卓app 打包工具,也叫做安卓应用程序打包工具,是一种将安卓应用程序源代码打包成APK安装包的工具。打包工具的主要功能是将程序源代码编译成字节码,并将资源文件和其他必要文件打包到一个APK文件中,最终生成一个可安装的安卓应用程序。目前,市面上比较流行的安
2023-04-28
关于安卓app开发
安卓app开发指的是为安卓操作系统设计和开发应用程序。安卓是一种基于Linux内核的操作系统,它的应用程序使用Java语言编写,以dex格式打包为.apk文件在设备上运行。安卓应用程序的开发包括以下几个方面:1. Android SDK:Android S
2023-04-28
php安卓app开发
PHP语言是一种服务器端脚本语言,主要用于Web开发环境。它可以在服务器端生成动态网页,也可以作为命令行脚本来执行。PHP语言通常与MySQL数据库一起使用,用于构建Web应用程序和后端服务。在安卓APP开发中,需要将PHP代码嵌入到APP中,这样就可以通
2023-04-28
c#开发安卓app
C#是一种面向对象的编程语言,与Java或Kotlin一样,都可以用于开发Android应用程序。事实上,C#配合Xamarin平台可以实现在Android、iOS、Windows等多个平台上开发原生应用程序,因此非常受欢迎。下面我们来介绍一下在C#中开发
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1