Указание прав доступа к URI в поставщиках контента
Итак, каким образом поставщик контента указывает права доступа к URI? Это делается в файле AndroidManifest.xml одним из двух способов.
• В дескрипторе >provider< можно установить в true или false атрибут android:grantUriPermissions. Значение true означает, что разрешен доступ к любому контенту из данного поставщика контента. Значение false означает второй способ задания прав доступа к URI, или же поставщик контента может решить не позволять никому другому предоставлять доступ.
• Можно указать права доступа с помощью дочерних дескрипторов для >provider<. Дочерним дескриптором является >grant-uri-permission<, и в одном дескрипторе >provider< их может быть несколько. У дескриптора >grant-uripermission< может быть три следующих атрибута:
• android:path позволяет указать полный путь, который будет иметь выдаваемые права доступа;
• android:pathPrefix позволяет указать начало пути URI;
• android:pathPattern позволяет использовать при указании пути обобщенные символы (символ *).
Как уже было сказано, сущность, предоставляющая доступ, сама должна обладать соответствующими правами на доступ к контенту, прежде чем она сможет разрешить доступ какой-то другой сущности. У поставщиков контента имеются дополнительные способы управления доступом к их контенту: атрибут android:readPermission дескриптора >provider<, атрибут android:writePermission и атрибут android:permission (удобный способ указать с помощью одного строкового значения право и на чтение, и на запись). Все эти атрибуты имеют тип String и представляют право, которое должен иметь вызывающий процесс, чтобы выполнять чтение или запись с помощью этого поставщика. Прежде чем активность сможет выдать право на чтение для URI контента, сама эта активность уже должна иметь право на чтение, указанное атрибутом android:readPermission или android:permission. Сущность, которой нужны эти права, должна объявить их в своем файле манифеста с помощью дескриптора >uses-permission<.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.