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日

相关文章

  • Vue3如何使用axios发起网络请求

    当你使用Vue3开发网站时,可能需要使用到axios来发起网络请求。axios是一个强大的Http请求库,它不仅可以在浏览器端使用,也可以在Node.js中使用。在Vue3中使用axios来发起网络请求十分简单,下面就是详细的攻略。 安装和引入axios 首先,你需要安装axios,使用NPM的命令行工具,在你的项目中导入axios。 npm install…

    other 2023年6月27日
    00
  • 如何添加ip地址?电脑添加额外ip地址的方法

    如何添加IP地址? 在电脑上添加额外的IP地址可以帮助您实现更多的网络连接和功能。下面是一份完整的攻略,教您如何添加IP地址。 步骤一:打开网络设置 首先,您需要打开电脑的网络设置。具体的步骤可能因操作系统的不同而有所差异,但通常可以在控制面板或系统设置中找到网络设置选项。 步骤二:选择网络适配器 在网络设置中,您将看到已连接的网络适配器列表。找到您想要添加…

    other 2023年7月30日
    00
  • C++的matlab接口转换方法详解

    C++的Matlab接口转换方法详解 在C++程序中调用Matlab函数可以通过Matlab Engine实现。Matlab Engine是Matlab提供的可供C++程序通过调用库函数调用Matlab函数的接口。 在使用Matlab Engine时,需要对数据类型进行转换,本文介绍使用Matlab Engine调用Matlab函数时的数据类型转换方法。 1…

    other 2023年6月26日
    00
  • Windows 10Build 10240已开发完成 最后的正式发布版

    Windows 10 Build 10240 完成开发攻略 Windows 10 Build 10240 是 Windows 10 的最终正式发布版。本攻略将详细介绍如何完成该版本的开发过程,并提供两个示例说明。 步骤一:准备开发环境 在开始开发之前,确保你已经准备好以下开发环境: 一台运行 Windows 操作系统的计算机 安装了最新的 Windows 1…

    other 2023年8月5日
    00
  • uniapp实现全局变量的几种方式总结

    UniApp实现全局变量的几种方式总结 在UniApp中,实现全局变量可以帮助我们在不同页面之间共享数据。下面是几种实现全局变量的方式的详细讲解。 1. 使用Vuex Vuex是Vue.js的状态管理库,可以在UniApp中使用它来实现全局变量。以下是使用Vuex的步骤: 安装Vuex:在项目根目录下执行以下命令安装Vuex。 npm install vue…

    other 2023年7月29日
    00
  • pandas修改列名

    pandas修改列名 Pandas是Python中最常用的数据分析库之一,它提供了大量的函数和工具,使得数据处理、分析和可视化变得更加容易。Pandas中的数据结构主要有Series和DataFrame,而列名是DataFrame中最重要的属性之一。在这篇文章中,我们将更加详细地介绍如何使用Pandas修改DataFrame中的列名。 什么是列名 在Data…

    其他 2023年3月28日
    00
  • 微软向 Win10 用户强推电脑运行状况检查应用,无论是否打算升级 Win11

    当用户在 Windows 10 操作系统中打开“设置”窗口时,会出现电脑运行状况检查应用的弹窗提示,引导用户下载安装该应用。该应用程序旨在检查计算机硬件和软件的状态,以帮助用户优化其计算机性能。 以下是该应用程序的详细攻略: 下载安装电脑运行状况检查应用 步骤 1:打开“设置”窗口 点击 Windows 10 开始按钮,从弹出菜单中选择“设置”。 步骤 2:…

    other 2023年6月25日
    00
  • 如何禁止QQ修改浏览器的鼠标右键菜单

    下面是如何禁止QQ修改浏览器的鼠标右键菜单的完整攻略。 1. 为什么禁止QQ修改浏览器的鼠标右键菜单 QQ浏览器会默认将鼠标右键菜单设置为其自己的菜单,这种行为可能影响用户的浏览体验。有些用户可能更喜欢使用浏览器默认的右键菜单,因此需要对QQ浏览器进行设置。 2. 禁止QQ修改浏览器的鼠标右键菜单的方法 方法1:通过QQ浏览器设置 打开QQ浏览器,点击浏览器…

    other 2023年6月27日
    00