diff --git a/docs/html/guide/topics/manifest/provider-element.jd b/docs/html/guide/topics/manifest/provider-element.jd index 7b4ca8fc21c0f..6cf6843354fc7 100644 --- a/docs/html/guide/topics/manifest/provider-element.jd +++ b/docs/html/guide/topics/manifest/provider-element.jd @@ -5,7 +5,9 @@ parent.link=manifest-intro.html
<provider android:authorities="list" +
+<provider android:authorities="list"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
@@ -20,10 +22,13 @@ parent.link=manifest-intro.html
android:syncable=["true" | "false"]
android:writePermission="string" >
. . .
-</provider><application><application>
+<meta-data>
@@ -31,58 +36,67 @@ parent.link=manifest-intro.html
<path-permission>
-The Android system identifies content providers by the authority part
- of a {@code content:} URI. For example, suppose that the following URI
-is passed to {@link android.content.ContentResolver#query
-ContentResolver.query()}:
-
-
{@code content://com.example.project.healthcareprovider/nurses/rn}
- --The {@code content:} scheme identifies the data as belonging to a content -provider and the authority ({@code com.example.project.healthcareprovider}) -identifies the particular provider. The authority therefore must be unique. -Typically, as in this example, it's the fully qualified name of a -ContentProvider subclass. The path part of a URI may be used by a content -provider to identify particular data subsets, but those paths are not -declared in the manifest. -
- --For information on using and developing content providers, see a separate document, -Content Providers. -
+ 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. +
++ The Android system stores references to content providers according to an authority + string, part of the provider's content URI. For example, suppose you want to + access a content provider that stores information about health care professionals. To do + this, you call the method + {@link android.content.ContentResolver#query ContentResolver.query()}, which among other + arguments takes a URI that identifies the provider: +
++content://com.example.project.healthcareprovider/nurses/rn ++
+ The content: scheme identifies the URI as a content URI pointing to
+ an Android content provider. The authority
+ com.example.project.healthcareprovider identifies the provider itself; the
+ Android system looks up the authority in its list of known providers and their authorities.
+ The substring nurses/rn is a path, which the content provider can use
+ to identify subsets of the provider data.
+
+ Notice that when you define your provider in the <provider> element, you
+ don't include the scheme or the path in the android:name argument, only the
+ authority.
+
+ For information on using and developing content providers, see the API Guide, + Content Providers. +
++ There is no default. At least one authority must be specified. +
+-There is no default. At least one authority must be specified. -
+
The <application> element has its own
enabled attribute that applies to all
application components, including content providers. The
@@ -93,17 +107,37 @@ are by default) for the content provider to be enabled. If either is
-You can export a content provider but still limit access to it with the
-permission attribute.
-
true: The provider is available to other applications. Any application can
+ use the provider's content URI to access it, subject to the permissions specified for
+ the provider.
+ false: The provider is not available to other applications. Set
+ android:exported="false" 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.
+
+ The default value is "true" for applications that set either
+android:minSdkVersion
+ or
+android:targetSdkVersion to
+ "16" or lower. For applications that
+ set either of these attributes to "17" or higher, the default is
+ "false".
+
+ You can set android:exported="false" and still limit access to your
+ provider by setting permissions with the
+ permission
+ attribute.
+