В вашем примере UserDictionary.Words.CONTENT_URI - это то, что идентифицирует данные в поставщике, поэтому местоположение данных, добавленный идентификатор - это то, что идентифицирует уникальную запись.
Итак, на ваших примерах:
1) Для Запрос использует UserDictionary.Words.CONTENT_URI для возврата всех записей по этому адресу Uri контента.Если вы хотите вернуть только одну конкретную запись, из которой вы уже знаете ее Id, то это также может быть следующим:
Uri uri = ContentUris.withAppendedId(Words.CONTENT_URI, id);
resolver.query(uri, projection, null, null, null);
3) Для Вставка , идентификатор не используется.потому что запись еще не существует.Операция заключается в вставке новой записи в базу данных, и возвращаемым значением будет новая запись Uri, которая будет содержать новый идентификатор.
3) Для Обновить ,добавленный идентификатор используется для определения, какая конкретная запись должна быть обновлена.Обновление UserDictionary.Words.CONTENT_URI без идентификатора записи приведет к обновлению всех записей.
4) Для Удалить в вашем примере удаляются все записи, где находится столбец Words.WORD.имеет значение "Zaphod", что может привести к удалению 0, 1 или нескольких записей.Если вы хотите удалить только 1 конкретную запись, из которой вы знаете ее Id, она будет выглядеть следующим образом:
Uri uri = ContentUris.withAppendedId(Words.CONTENT_URI, id);
resolver.delete(uri, null, null);
Отвечая на ваш последний вопрос, между Words.CONTENT_URI * 1024 нет никакой разницы* и UserDictionary.Words.CONTENT_URI .Раздел UserDictionary является классификатором, который можно удалить, если он был добавлен в качестве импорта поверх файла Java, это позволяет не вводить его все время, но в конце оба на самом деле являютсято же самое и без разницы.