读取手机通讯录的方法
在Android 10及以上版本中,由于对用户隐私的保护,应用需要获取用户授权才能访问通讯录信息。下面将介绍如何在Android应用中使用新的权限模型读取手机通讯录。
1. 获取权限
首先,在AndroidManifest.xml文件中添加以下权限声明:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
然后,在应用运行时,需要动态请求读取通讯录权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CONTACTS);
}
2. 读取通讯录数据
使用ContentResolver可以获取通讯录数据。以下是一个示例代码,用于读取通讯录中的联系人姓名和电话号码:
// 查询通讯录数据
Cursor cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER},
null,
null,
null
);
// 遍历结果集
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 处理联系人姓名和电话号码
}
}
3. 显示通讯录数据
最后,可以将读取到的通讯录数据显示在应用界面上,例如使用RecyclerView展示联系人列表。下面是一个简单的代码示例:
// 设置RecyclerView
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
ContactAdapter adapter = new ContactAdapter(contactList);
recyclerView.setAdapter(adapter);
总结
通过以上步骤,我们可以在Android应用中实现读取手机通讯录的功能。记得在处理用户数据时要遵守相关隐私政策,确保用户数据安全。希望这篇文章对你有所帮助!