是的,Android 11+移除了目录联系人。相反,您可以使用以下代码示例从设备联系人中获得目录联系人:
private ArrayList getDirectoryContacts(ContentResolver cr) {
ArrayList directoryContacts = new ArrayList<>();
Uri uri = ContactsContract.Directory.CONTENT_URI;
String[] projection = new String[]{
ContactsContract.Directory.ACCOUNT_NAME,
ContactsContract.Directory.ACCOUNT_TYPE,
ContactsContract.Directory.TYPE_RESOURCE_ID};
String selection = ContactsContract.Directory.ACCOUNT_TYPE + " = ?";
String[] selectionArgs = new String[]{ContactsContract.Directory.ACCOUNT_TYPE_LOCAL};
Cursor cursor = cr.query(
uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String accountName = cursor.getString(0);
String accountType = cursor.getString(1);
int resourceId = cursor.getInt(2);
directoryContacts.add(accountName + ", " + accountType + ", " + resourceId);
} while (cursor.moveToNext());
cursor.close();
}
return directoryContacts;
}
使用ContentResolver作为参数,此方法将遍历设备上的目录并返回一个包含其名称、类型和资源ID的字符串列表。