Fix contentprovider docs android:exported default
Change-Id: I30682905e99fa3d05b6315c011e290fe509588f4
This commit is contained in:
@@ -5,7 +5,9 @@ parent.link=manifest-intro.html
|
|||||||
|
|
||||||
<dl class="xml">
|
<dl class="xml">
|
||||||
<dt>syntax:</dt>
|
<dt>syntax:</dt>
|
||||||
<dd><pre class="stx"><provider android:<a href="#auth">authorities</a>="<i>list</i>"
|
<dd>
|
||||||
|
<pre class="stx">
|
||||||
|
<provider android:<a href="#auth">authorities</a>="<i>list</i>"
|
||||||
android:<a href="#enabled">enabled</a>=["true" | "false"]
|
android:<a href="#enabled">enabled</a>=["true" | "false"]
|
||||||
android:<a href="#exported">exported</a>=["true" | "false"]
|
android:<a href="#exported">exported</a>=["true" | "false"]
|
||||||
android:<a href="#gprmsn">grantUriPermissions</a>=["true" | "false"]
|
android:<a href="#gprmsn">grantUriPermissions</a>=["true" | "false"]
|
||||||
@@ -20,10 +22,13 @@ parent.link=manifest-intro.html
|
|||||||
android:<a href="#sync">syncable</a>=["true" | "false"]
|
android:<a href="#sync">syncable</a>=["true" | "false"]
|
||||||
android:<a href="#wprmsn">writePermission</a>="<i>string</i>" >
|
android:<a href="#wprmsn">writePermission</a>="<i>string</i>" >
|
||||||
. . .
|
. . .
|
||||||
</provider></pre></dd>
|
</provider></pre>
|
||||||
|
</dd>
|
||||||
|
|
||||||
<dt>contained in:</dt>
|
<dt>contained in:</dt>
|
||||||
<dd><code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code></dd>
|
<dd>
|
||||||
|
<code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code>
|
||||||
|
</dd>
|
||||||
|
|
||||||
<dt>can contain:</dt>
|
<dt>can contain:</dt>
|
||||||
<dd><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data></a></code>
|
<dd><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data></a></code>
|
||||||
@@ -31,58 +36,67 @@ parent.link=manifest-intro.html
|
|||||||
<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission></a></code></dd>
|
<br/><code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission></a></code></dd>
|
||||||
|
|
||||||
<dt>description:</dt>
|
<dt>description:</dt>
|
||||||
<dd>Declares a content provider — a subclass of
|
<dd>
|
||||||
{@link android.content.ContentProvider} — that supplies structured
|
Declares a content provider component. A content provider is a subclass of
|
||||||
access to data managed by the application. All content providers that
|
{@link android.content.ContentProvider} that supplies structured access to data managed by the
|
||||||
are part of the application must be represented by {@code <provider>}
|
application. All content providers in your application must be defined in a
|
||||||
elements in the manifest file. The system cannot see, and therefore will
|
{@code <provider>} element in the manifest file; otherwise, the system is unaware of them
|
||||||
not run, any that are not declared. (You need to declare only
|
and doesn't run them.
|
||||||
those content providers that you develop as part of your application,
|
<p>
|
||||||
not those developed by others that your application uses.)
|
You only declare content providers that are part of your application. Content providers in
|
||||||
|
other applications that you use in your application should not be declared.
|
||||||
<p>
|
</p>
|
||||||
The Android system identifies content providers by the authority part
|
<p>
|
||||||
of a {@code content:} URI. For example, suppose that the following URI
|
The Android system stores references to content providers according to an <b>authority</b>
|
||||||
is passed to <code>{@link android.content.ContentResolver#query
|
string, part of the provider's <b>content URI</b>. For example, suppose you want to
|
||||||
ContentResolver.query()}</code>:
|
access a content provider that stores information about health care professionals. To do
|
||||||
|
this, you call the method
|
||||||
<p style="margin-left: 2em">{@code content://com.example.project.healthcareprovider/nurses/rn}</p>
|
{@link android.content.ContentResolver#query ContentResolver.query()}, which among other
|
||||||
|
arguments takes a URI that identifies the provider:
|
||||||
<p>
|
</p>
|
||||||
The {@code content:} scheme identifies the data as belonging to a content
|
<pre>
|
||||||
provider and the authority ({@code com.example.project.healthcareprovider})
|
content://com.example.project.healthcareprovider/nurses/rn
|
||||||
identifies the particular provider. The authority therefore must be unique.
|
</pre>
|
||||||
Typically, as in this example, it's the fully qualified name of a
|
<p>
|
||||||
ContentProvider subclass. The path part of a URI may be used by a content
|
The <code>content:</code> <b>scheme</b> identifies the URI as a content URI pointing to
|
||||||
provider to identify particular data subsets, but those paths are not
|
an Android content provider. The authority
|
||||||
declared in the manifest.
|
<code>com.example.project.healthcareprovider</code> identifies the provider itself; the
|
||||||
</p>
|
Android system looks up the authority in its list of known providers and their authorities.
|
||||||
|
The substring <code>nurses/rn</code> is a <b>path</b>, which the content provider can use
|
||||||
<p>
|
to identify subsets of the provider data.
|
||||||
For information on using and developing content providers, see a separate document,
|
</p>
|
||||||
<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
|
<p>
|
||||||
</p></dd>
|
Notice that when you define your provider in the <code><provider></code> element, you
|
||||||
|
don't include the scheme or the path in the <code>android:name</code> argument, only the
|
||||||
|
authority.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For information on using and developing content providers, see the API Guide,
|
||||||
|
<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
<dt>attributes:</dt>
|
<dt>attributes:</dt>
|
||||||
<dd><dl class="attr">
|
<dd>
|
||||||
<dt><a name="auth"></a>{@code android:authorities}</dt>
|
<dl class="attr">
|
||||||
<dd>A list of one or more URI authorities that identify data under the purview
|
<dt><a name="auth"></a>{@code android:authorities}</dt>
|
||||||
of the content provider.
|
<dd>
|
||||||
Multiple authorities are listed by separating their names with a semicolon.
|
A list of one or more URI authorities that identify data offered by the content provider.
|
||||||
To avoid conflicts, authority names should use a Java-style naming convention
|
Multiple authorities are listed by separating their names with a semicolon.
|
||||||
(such as {@code com.example.provider.cartoonprovider}). Typically, it's the name
|
To avoid conflicts, authority names should use a Java-style naming convention
|
||||||
of the ContentProvider subclass.
|
(such as {@code com.example.provider.cartoonprovider}). Typically, it's the name
|
||||||
|
of the {@link android.content.ContentProvider} subclass that implements the provider
|
||||||
|
<p>
|
||||||
|
There is no default. At least one authority must be specified.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
<p>
|
<dt><a name="enabled"></a>{@code android:enabled}</dt>
|
||||||
There is no default. At least one authority must be specified.
|
<dd>Whether or not the content provider can be instantiated by the system —
|
||||||
</p></dd>
|
"{@code true}" if it can be, and "{@code false}" if not. The default value
|
||||||
|
is "{@code true}".
|
||||||
|
|
||||||
<dt><a name="enabled"></a>{@code android:enabled}</dt>
|
<p>
|
||||||
<dd>Whether or not the content provider can be instantiated by the system —
|
|
||||||
"{@code true}" if it can be, and "{@code false}" if not. The default value
|
|
||||||
is "{@code true}".
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> element has its own
|
The <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> element has its own
|
||||||
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
|
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> attribute that applies to all
|
||||||
application components, including content providers. The
|
application components, including content providers. The
|
||||||
@@ -93,17 +107,37 @@ are by default) for the content provider to be enabled. If either is
|
|||||||
</p></dd>
|
</p></dd>
|
||||||
|
|
||||||
<dt><a name="exported"></a>{@code android:exported}</dt>
|
<dt><a name="exported"></a>{@code android:exported}</dt>
|
||||||
<dd>Whether or not the content provider can be used by components of other
|
<dd>
|
||||||
applications — "{@code true}" if it can be, and "{@code false}" if not.
|
Whether the content provider is available for other applications to use:
|
||||||
If "{@code false}", the provider is available only to components of the
|
<ul>
|
||||||
same application or applications with the same user ID. The default value
|
<li>
|
||||||
is "{@code true}" for applications which target API level 16 (Jelly Bean)
|
<code>true</code>: The provider is available to other applications. Any application can
|
||||||
and below, and "{@code false}" otherwise.
|
use the provider's content URI to access it, subject to the permissions specified for
|
||||||
|
the provider.
|
||||||
<p>
|
</li>
|
||||||
You can export a content provider but still limit access to it with the
|
<li>
|
||||||
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code> attribute.
|
<code>false</code>: The provider is not available to other applications. Set
|
||||||
</p></dd>
|
<code>android:exported="false"</code> to limit access to the provider to your
|
||||||
|
applications. Only applications that have the same user ID (UID) as the provider will
|
||||||
|
have access to it.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
The default value is <code>"true"</code> for applications that set either
|
||||||
|
<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">android:minSdkVersion</a></code>
|
||||||
|
or
|
||||||
|
<code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">android:targetSdkVersion</a></code> to
|
||||||
|
<code>"16"</code> or lower. For applications that
|
||||||
|
set either of these attributes to <code>"17"</code> or higher, the default is
|
||||||
|
<code>"false"</code>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
You can set <code>android:exported="false"</code> and still limit access to your
|
||||||
|
provider by setting permissions with the
|
||||||
|
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">permission</a></code>
|
||||||
|
attribute.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
<dt><a name="gprmsn"></a>{@code android:grantUriPermissions}</dt>
|
<dt><a name="gprmsn"></a>{@code android:grantUriPermissions}</dt>
|
||||||
<dd>Whether or not those who ordinarily would not have permission to
|
<dd>Whether or not those who ordinarily would not have permission to
|
||||||
|
|||||||
Reference in New Issue
Block a user