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

yizhihongxing

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

在Android应用中实现通讯录效果,可以通过以下步骤获取手机号码和姓名。

步骤一:添加权限

首先,在AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name=\"android.permission.READ_CONTACTS\" />

这个权限允许应用读取设备上的联系人信息。

步骤二:创建布局文件

接下来,创建一个布局文件,用于显示获取到的手机号码和姓名。可以使用一个TextView来显示这些信息。

<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\"
    android:orientation=\"vertical\">

    <TextView
        android:id=\"@+id/phoneTextView\"
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\" />

    <TextView
        android:id=\"@+id/nameTextView\"
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\" />

</LinearLayout>

步骤三:获取手机号码和姓名

在Activity或Fragment中,可以使用以下代码获取手机号码和姓名:

import android.database.Cursor;
import android.provider.ContactsContract;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView phoneTextView;
    private TextView nameTextView;

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

        phoneTextView = findViewById(R.id.phoneTextView);
        nameTextView = findViewById(R.id.nameTextView);

        // 查询联系人信息
        Cursor cursor = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null,
                null,
                null,
                null
        );

        if (cursor != null && cursor.moveToFirst()) {
            // 获取手机号码和姓名列的索引
            int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);

            // 遍历联系人信息
            do {
                String phoneNumber = cursor.getString(phoneIndex);
                String name = cursor.getString(nameIndex);

                // 显示手机号码和姓名
                phoneTextView.setText(\"手机号码:\" + phoneNumber);
                nameTextView.setText(\"姓名:\" + name);
            } while (cursor.moveToNext());

            cursor.close();
        }
    }
}

示例说明

以下是两个示例说明,展示如何使用上述代码获取手机号码和姓名。

示例一:在Activity中显示通讯录信息

public class MainActivity extends AppCompatActivity {

    // ...

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

        // ...

        // 查询联系人信息
        Cursor cursor = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null,
                null,
                null,
                null
        );

        if (cursor != null && cursor.moveToFirst()) {
            // 获取手机号码和姓名列的索引
            int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);

            // 遍历联系人信息
            do {
                String phoneNumber = cursor.getString(phoneIndex);
                String name = cursor.getString(nameIndex);

                // 显示手机号码和姓名
                phoneTextView.setText(\"手机号码:\" + phoneNumber);
                nameTextView.setText(\"姓名:\" + name);
            } while (cursor.moveToNext());

            cursor.close();
        }
    }
}

示例二:在Fragment中显示通讯录信息

public class MyFragment extends Fragment {

    // ...

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_my, container, false);

        phoneTextView = view.findViewById(R.id.phoneTextView);
        nameTextView = view.findViewById(R.id.nameTextView);

        // ...

        // 查询联系人信息
        Cursor cursor = getActivity().getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null,
                null,
                null,
                null
        );

        if (cursor != null && cursor.moveToFirst()) {
            // 获取手机号码和姓名列的索引
            int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);

            // 遍历联系人信息
            do {
                String phoneNumber = cursor.getString(phoneIndex);
                String name = cursor.getString(nameIndex);

                // 显示手机号码和姓名
                phoneTextView.setText(\"手机号码:\" + phoneNumber);
                nameTextView.setText(\"姓名:\" + name);
            } while (cursor.moveToNext());

            cursor.close();
        }

        return view;
    }
}

以上是实现Android通讯录效果的完整攻略,通过添加权限、创建布局文件和获取手机号码和姓名的步骤,可以在应用中显示通讯录信息。示例说明展示了在Activity和Fragment中如何使用这些代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现通讯录效果——获取手机号码和姓名 - Python技术站

(0)
上一篇 2023年9月6日
下一篇 2023年9月6日

相关文章

  • vue-cli对element-ui组件进行二次封装的实战记录

    下面是针对“vue-cli对element-ui组件进行二次封装的实战记录”的完整攻略: 1. 准备工作 首先,我们需要在vue-cli项目中安装element-ui和vuex这两个依赖: npm install element-ui –save npm install vuex –save 接下来,我们需要在main.js中进行全局引入,并使用Vue.…

    other 2023年6月25日
    00
  • maven的.m2文件夹

    Maven的.m2文件夹 在使用Maven构建Java项目时,Maven会自动下载所需要的依赖库并存放在本地的.m2文件夹中。因此,对于开发者来说,正确的理解和管理.m2文件夹是非常重要的。 .m2文件夹的作用 .m2文件夹存放的是本地Maven仓库,包括各种jar包、pom文件、源码等。当我们在使用Maven构建项目时,会先在本地的.m2文件夹中查找所需要…

    其他 2023年3月29日
    00
  • Vue封装全局过滤器Filters的步骤

    下面是Vue封装全局过滤器Filters的步骤的详细讲解。 步骤一:在Vue中定义全局过滤器 在Vue中定义全局过滤器的操作比较简单,我们只需要在Vue实例的filters属性中定义一个函数,然后在模板中使用{{ 表达式 | 过滤器名 }}的方式进行调用。 示例一 下面是一个将数字金额转换为万元的全局过滤器的例子: Vue.filter(‘toWanYuan…

    other 2023年6月25日
    00
  • linux系列之常用运维命令整理笔录(小结)

    Linux系列之常用运维命令整理笔录(小结) 前言 在Linux系统的运维工作中,经常需要使用一些基础的命令来进行操作和维护,这些命令可以说是我们的“基本功”。本篇文章将总结常用的运维命令,帮助大家更好地掌握这些工具,提高运维效率。 常用命令 下面列出了一些常用的命令,分别是: 文件操作命令 系统监控命令 进程管理命令 网络管理命令 磁盘管理命令 文件操作命…

    other 2023年6月26日
    00
  • linux常用基本命令[find]用法(1)-ghostwu-博客园

    find命令是Linux中常用的命令之一,用于在指定目录下查找文件或目录。以下是关于find命令的详细攻略: 命令概述 find命令语法如下: find [path] [expression] 其中,path表示要查找的目录路径,expression表示查找表达式。 常用选项 find命令有许多选项,以下是一些常用的选项: -name:按照文件名查找。 -t…

    other 2023年5月7日
    00
  • 详解iOS中按钮点击事件处理方式

    详解iOS中按钮点击事件处理方式 在iOS开发中,按钮(UIButton)是一个常用的控件。如何处理按钮的点击事件是iOS开发的基础之一。本文将详细讲解iOS中按钮点击事件处理的方式。 1. addTarget方法 UIButton的addTarget方法是最常见的处理按钮点击事件的方式。它的语法如下: – (void)addTarget:(nullable…

    other 2023年6月26日
    00
  • java的四种引用——强弱软虚

    Java的四种引用——强弱软虚 Java中的内存管理是一个关键问题,为了更好地利用内存资源,Java引入了垃圾回收机制,但是垃圾回收并不意味着内存就完全不需要管理了。Java中有四种引用类型,分别是强引用,弱引用,软引用和虚引用,这四种引用类型分别有不同的使用场景和生命周期,是Java内存管理的重要组成部分。 强引用 强引用是Java中默认的引用类型,如果存…

    其他 2023年3月28日
    00
  • 深入NAS协议系列: 召唤SMB2 OpLock/Lease

    深入NAS协议系列:召唤SMB2 OpLock/Lease的完整攻略 什么是SMB2 OpLock/Lease SMB2 OpLock/Lease是一种用于提高SMB2协议性能的机制。OpLock(Opportunistic Lock)是一种机制,它允许客户端在本地缓存文件的内容,从而减少对服务器的访问。Lease是一种机制,它允许客户端在本地缓存文件的元数…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部