grant-uri-permission-element.jd revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpage.title=<grant-uri-permission>
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@jd:body
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dl class="xml">
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>syntax:</dt>
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd><pre class="stx">&lt;grant-uri-permission android:<a href="#path">path</a>="<i>string</i>"
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                      android:<a href="#path">pathPattern</a>="<i>string</i>"
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                      android:<a href="#path">pathPrefix</a>="<i>string</i>" /&gt;</pre></dd>
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>contained in:</dt>
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code></dd>
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>description:</dt>
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd>Specifies which data subsets of the parent content provider permission
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcan be granted for.  Data subsets are indicated by the path part of a 
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{@code content:} URI.  (The authority part of the URI identifies the
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcontent provider.)  
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGranting permission is a way of enabling clients of the provider that don't 
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnormally have permission to access its data to overcome that restriction on 
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecta one-time basis.
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p> 
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIf a content provider's <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code> 
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectattribute is "{@code true}", permission can be granted for any the data under 
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectthe provider's purview.  However, if that attribute is "{@code false}", permission 
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectcan be granted only to data subsets that are specified by this element.  
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectA provider can contain any number of {@code &lt;grant-uri-permission&gt;} elements.  
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectEach one can specify only one path (only one of the three possible attributes).
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p>
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectFor information on how permission is granted, see the 
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">grantUriPermissions</a></code> attribute.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p></dd>
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>attributes:</dt>
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd><dl class="attr">
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt><a name="path"></a>{@code android:path}
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<br/>{@code android:pathPrefix}
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<br/>{@code android:pathPattern}</dt>
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd>A path identifying the data subset or subsets that permission can be 
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectgranted for.  The {@code path} attribute specifies a complete path; 
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpermission can be granted only to the particular data subset identified 
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectby that path.  
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectThe {@code pathPrefix} attribute specifies the initial part of a path; 
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpermission can be granted to all data subsets with paths that share that 
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinitial part.   
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectThe {@code pathPattern} attribute specifies a complete path, but one 
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectthat can contain the following wildcards:
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<ul>
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<li>An asterisk ('{@code *}') matches a sequence of 0 to many occurrences of
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectthe immediately preceding character.</li>
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<li><p>A period followed by an asterisk ("{@code .*}") matches any sequence of 
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project0 to many characters.</p></li>
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</ul>
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBecause '{@code \}' is used as an escape character when the string is read 
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectfrom XML (before it is parsed as a pattern), you will need to double-escape:  
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectFor example, a literal '{@code *}' would be written as "{@code \\*}" and a 
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectliteral '{@code \}' would be written as "{@code \\\\}".  This is basically 
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectthe same as what you would need to write if constructing the string in Java code.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p>
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectFor more information on these types of patterns, see the descriptions of 
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{@link android.os.PatternMatcher#PATTERN_LITERAL},
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{@link android.os.PatternMatcher#PATTERN_PREFIX}, and
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB} in the
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{@link android.os.PatternMatcher} class.
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p></dd>
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</dl></dd>
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>see also:</dt>
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd>the 
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmns">grantUriPermissions</a></code>
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectattribute of the 
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectelement</dd>
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</dl>
86