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

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日

相关文章

  • 在Web服务器上如何启用并运行FTP服务

    启用并运行FTP服务需要以下步骤: 安装FTP服务器软件 首先需要安装一个FTP服务器软件,这里以vsftpd为例。在Linux系统上,可以使用以下命令安装vsftpd: sudo apt-get install vsftpd 配置FTP服务器安装完成后,需要对FTP服务器进行配置。主要配置文件是/etc/vsftpd.conf。可以使用文本编辑器,打开并修…

    other 2023年6月27日
    00
  • MySQL通过自定义函数实现递归查询父级ID或者子级ID

    MySQL 通过自定义函数实现递归查询父级 ID 或者子级 ID 的过程分为以下几步: 创建一个表用于存储数据,表结构应当包含一个主键和一个指向自己的外键,例如: CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `par…

    other 2023年6月27日
    00
  • spring boot配置dubbo方式(properties)

    下面我会为您详细讲解“Spring Boot配置Dubbo方式(properties)”的完整攻略。 1. 基本概念 在介绍配置方法之前,我们先来了解一下Dubbo和Spring Boot。 Dubbo是阿里巴巴开源的一款高性能的Java RPC框架,它提供了基于接口的远程调用功能,同时也支持多种协议(dubbo、restful、hessian、http等)…

    other 2023年6月25日
    00
  • pushgateway介绍

    以下是关于Pushgateway的介绍的完整攻略: 什么是Pushgateway? Pushgateway是一个开源的Prometheus生态系统组件,用于接收来自短期作业的指标数据。它允许您将指标数据推送到Prometheus服务器,而不是等待Prometheus服务器拉取数据。这对于短期作业(如批处理作业或临时服务)非常有用,因为它们可能不会一直运行,因…

    other 2023年5月6日
    00
  • 如何在excel中查找和替换正则表达式

    在Excel中,可以使用正则表达式进行查找和替换。下面是在Excel中查找和替换正则表达式的完整攻略: 打开Excel并打开要查找和替换的工作表。 按下“Ctrl + H”键,打开“查找和替换”对话框。 在“查找和替换”对话框中,点击“选项”按钮,展开高级选项。 在高级选项中,勾选“使用正则表达式”。 在“查找”文本框中输入要查找的正则表达式,例如查找所有以…

    other 2023年5月8日
    00
  • LUA string库使用小结

    下面是本文的详细讲解“Lua string库使用小结”的攻略。 什么是Lua string库? Lua string库是Lua中非常重要的一个标准库,它提供了许多处理字符串的函数。你可以使用这些函数来操作字符串,例如进行查找、替换、大小写转换、字符串连接等等。 常用的Lua string库函数 下面是一些常用的Lua string库函数: string.fi…

    other 2023年6月20日
    00
  • foreach中的index

    foreach中的index 在PHP中,foreach是一种常用的循环语句,它可以遍历数组和对象并执行相应的代码。在foreach循环中,我们有时会需要获取当前元素在数组中的位置,这时我们可以使用foreach中的index。 Syntax foreach循环中,我们可以通过如下方式获取当前元素在数组中的位置: foreach ($array as $in…

    其他 2023年3月29日
    00
  • maven之clean、install命令

    以下是“Maven之clean、install命令的完整攻略”的详细讲解,过程中包含两个示例说明的标准Markdown格式文本: Maven之clean、install命令的完整攻略 Maven是一个Java项目管理工具,可以通过Maven命令行工具来管理Java项目的构建、依赖、打包等操作。其中,clean、install是Maven中常用的两个命令,以下…

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