android获取联系人示例分享


在Android平台上获取联系人信息,你通常需要访问系统的联系人数据库。这通常涉及到使用`ContentResolver`来查询`ContactsContract.Contacts`和`ContactsContract.CommonDataKinds.Phone`等表。下面是一个基本的示例,展示了如何在Android应用中获取联系人列表及其电话号码。

请注意,为了访问联系人数据,你需要在你的AndroidManifest.xml文件中添加必要的权限:


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

从Android 6.0(API级别23)开始,你还需要在运行时请求此权限。

以下是一个简单的Java示例,演示如何获取联系人列表:


import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;

import java.util.ArrayList;
import java.util.List;

public class ContactUtil {

    // 假设这是一个内部工具类方法,用于获取联系人列表
    public static List<String> getContactList(Context context) {
        List<String> contacts = new ArrayList<>();
        ContentResolver cr = context.getContentResolver();
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String[] projection = new String[] {
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER
        };

        String selection = ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER + " = '1'";
        Cursor cur = cr.query(uri, projection, selection, null, null);

        if (cur != null) {
            while (cur.moveToNext()) {
                String name = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String phoneNo = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                contacts.add(name + ": " + phoneNo);
            }
            cur.close();
        }

        return contacts;
    }
}

请注意,这个示例仅用于演示目的,并未包含处理运行时权限请求的代码。在实际应用中,你需要确保在尝试访问联系人之前已经获得了`READ_CONTACTS`权限。

此外,由于隐私和安全性的考虑,现代Android应用可能还需要处理用户数据的敏感性和最小化访问权限的需求。因此,在实际应用中,请确保你的应用符合Google Play的策略和用户隐私的最佳实践。