文法
<provider android:authorities="list"
android:enabled=["true" |"false"]
android:exported=["true" |"false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" |"false"]
android:writePermission="string" >
.. .
</provider>
父元素
<application>
子項目
<meta-data>
<grant-uri-permission>
<path-permission>
描述
聲明content provider組件。Content provider是ContentProvider的子類,這個ContentProvider提供了對由應用管理的資料的結構化訪問。在應用中的所有content provider都必須在manifest檔案中通過<provider>元素進行聲明;否則系統就不知道它也不會運行它。
你只能定義content provider作為一個你應用的一部分。在你的應用中使用的其它應用的content provider不應被定義。
Android系統根據authority串儲存一個到content provider的引用,也就是provider的content URI部分。例如,加入你想通過content provider訪問關於健康保健專業的資訊。為了做這件事,你就需要調用方法ContentResolver.query(),在這個方法中,除了其它參數之外,還要傳遞標識了這個提供者的URI:
content://com.example.project.healthcareprovider/nurses/rn
這個content: scheme表示這個URI將作為內容URI指向Android content provider。而authoritycom.example.project.healthcareprovider則指明了這個provider自身;那麼Android系統就在它們已知的providers和authorities列表中進行尋找這個authority。子串nurses/rn是path,content provider就用它來標識這個提供者資料的子集。
注意,當你在<provider>元素中定義你的provider時,在android:name的參數中你不用包含這個scheme或path,而只需要authority。