Весь смысл отказа от полей CONTENT_FREQUENT_URI
, а также полей TIMES_CONTACTED
и LAST_TIME_CONTACTED
в таблице контактов заключается в предотвращении доступа приложений к информации, которую вы ищете.
Google теперь считает эту информацию конфиденциальной информацией пользователя и не позволит приложениям получать эту информацию в будущем.
Однако, исходя из моего опыта, мне кажется, что все устройства, которые я знаю или которыми пользуюсьнаши пользователи по-прежнему разрешают доступ к устаревшему API, поэтому, если вам нужно что-то, что будет хорошо для большинства ваших пользователей в течение следующего года, вы все равно можете его использовать.
Код должен выглядеть примерно так:
String[] projection = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.LAST_TIME_CONTACTED };
Cursor lastContacted = getContentResolver().query(Contacts.CONTENT_URI, projection, Contacts.LAST_TIME_CONTACTED + " < " + lastDayTimestamp, null, Contacts.LAST_TIME_CONTACTED + " DESC");
DatabaseUtils.dumpCursor(lastContacted);
Cursor mostContacted = getContentResolver().query(Contacts.CONTENT_URI, projection, null, null, Contacts.TIMES_CONTACTED + " DESC");
DatabaseUtils.dumpCursor(mostContacted); // might want to limit this to 3