<providerandroid: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> html
被包含於(CONTAINED IN): android
<application> 瀏覽器
可以包含的元素(CAN CONTAIN): 服務器
<meta-data> app
<grant-uri-permission> ide
<path-permission> 性能
說明(DESCRIPTION): ui
這個元素用於聲明一個內容提供器,它對應一個ContentProvider類的子類。它提供了對由應用程序管理的數據的結構化的訪問。應用程序使用的全部的內容提供器都必須在其清單文件中由<provider>元素來聲明。對於那些沒有在清單中聲明的內容提供器,系統看不到,也不會運行。(只須要聲明那些做爲該應用程序一部分的來開發的那些內容提供器,而不是那些由應用程序使用的由其餘人開發本應用以外的那些內容提供器)。 spa
Android系統經過content:URI的受權部分來識別內容提供器。例如,假設下列的URI要傳遞給ContentResolver.query()方法: .net
content://com.example.project.healthcareprovider/nurses/rn
content:表示數據是屬於內容提供器的,受權(com.example.project.healthcareprovider):標識着一個具體的提供器。所以受權必須惟一的。一般,就像這個例子同樣,受權是一個完整的ContentProvider子類的名稱。URI的路徑部分被內容提供器用來標識具體的數據子集,可是那些路徑沒有被聲明在清單文件中。
關於使用可開發內容提供器的更多信息,請看內容提供的文檔()。
http://blog.csdn.net/fireofstar/article/details/7307402
屬性(ATTRIBUTES):
android:authorities
標識內容提供器範圍內的數據URI的受權列表,有多個受權時,要用分號來分離每一個受權。爲了不衝突,受權名應該使用Java樣式的命名規則(如:com.example.provider.cartoonprovider)。一般,用ContentProvider子類名稱來設定這個屬性。
這個屬性沒有默認值,至少要指定一個受權。
android:enabled
這個屬性用於指定這個內容提供器是否可以被系統安裝。設置爲true,則能夠安裝;不然不能安裝。默認值是true。
<application>元素有它本身的enabled屬性,這個屬性會應用給全部的應用程序組件,包括內容提供器。<application>和<provider>的enabled屬性都必須設置爲true(它們的默認值都是true)。若是有一個設置爲false,那麼提供器就被禁止安裝。
android:exported
這個屬性用於指定該內容提供器是否可以被其餘的應用程序組件使用。若是設置爲true,則能夠被使用,不然不能被使用。若是設置爲false,該提供器只對同名的應用程序或有相同用戶ID的應用程序有效。默認值是true。
雖然可以使用這個屬性來公開內容提供器,可是依然還要用permission屬性來限制對它的訪問。
android:grantUriPermission
這個屬性用於設定那些對內容提供的數據沒有訪問權限的訪問者,是否可以被授予訪問的權限,這個權限是臨時性的,它會克服由readPermission、writePermission和permission屬性的設置限制。若是這個屬性設置爲true,那麼權限就能夠授予訪問者,不然不會授予沒有訪問權限的訪問者。若是設置爲true,則權限能夠臨時被授予內容提供器的任何數據。若是設置爲false,則權限只能被授予<gran-uri-permission>子元素中所列出的數據子集。默認值是false。
這種受權是應用程序提供了一種一次性訪問被權限所保護的數據的方法。例如,當一個e-mail包含了一個附件時,mail應用程序就能夠調用適當的瀏覽器來打開附件,即便這個瀏覽器沒有查看全部內容提供器數據的權限。
在這樣的場景中,權限是經過激活組件的Intent對象中的FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION標記來授予的。例如,mail應用程序能夠把FLAG_GRANT_READ_URI_PERMISSION標記放到傳遞給Context.startActivity()方法的Intent參數中。這樣權限就被授予了Intent對象中所指定的URI。
若是要啓用這個功能,既能夠經過把這個屬性設置爲true來完成,也能夠經過定義<grant-uri-permission>子元素來實現,在切換RUI時,必須調用Context.revokeUriPermission()方法從提供器把權限刪除。
android:icon
這個屬性用於定義一個表明內容提供器的圖標。它必需要引用一個包含圖片定義的可繪製資源。若是這個屬性沒有設置,那麼就會使用應用程序的<application>元素的icon屬性值來代替。
android:initOrder
這個屬性用於定義內容提供器應該被實例化的順序,這個順序是相對與相同進程所擁有的其餘內容提供器的。當內容提供器間有相互的依賴時,就須要設置這個屬性,以確保它們可以按照其依賴的順序被建立。這個屬性值是一個簡單的整數,大的數字要被優先初始化。
Android:label
這個屬性用於給內容提供器定義一個用戶可讀的標籤。若是這個屬性沒有設置,那麼它會使用<application>元素的label屬性值來代替。
這個標籤應該引用一個字符串資源來設置,以便它可以像其餘的用戶界面中的字符串同樣被本地化。可是爲了方便應用程序的開發,也可以使用原生的字符串來設置這個屬性,但正式發佈時必定要引用字符串資源。
android:multiprocess
這個屬性用於設定是否可以在每一個使用該內容提供器的客戶端進程中都建立一個內容提供器的實例,若是設置爲true,這個可以在其每一個客戶端進程中建立一個實例,不然不能夠。默認值是false。
一般,內容提供器是在定義它的應用程序的進程中被實例化的。可是,若是這個屬性被設置爲true,系統就可以在每一個要與該內容提供器進行交互的客戶端進程中建立一個內容提供器的實例,這樣就避免了進程間通訊的開銷。
android:name
這個屬性用於定義內容提供器的實現類的名稱,它是ContentProvider類的一個子類。這個屬性應該使用完整的Java類名來設定(如:com.example.project.TransportationProvider)。可是也可使用簡寫(如:.TransporttationProvider),這時系統會使用<manifest>元素中指定的包名跟這個簡寫名稱的組合來識別內容提供器。
這個屬性沒有默認值,必需要給這個屬性設定一個名稱。
android:permission
這個屬性用於設定客戶端在讀寫內容提供器的數據時必需要有的權限的名稱。這個屬性爲同時設置讀寫權限提供了一種便利的方法。可是readPermission和writePermission屬性的優先級要比這個屬性高。若是readPermission屬性也被設置了,那麼它就會控制對內容提供器的查詢訪問。若是writePermission屬性被設置,它就會控制對內容提供器數據的修改訪問。
android:process
這個屬性用於定義內容提供器應該運行在那個進程中的進程名稱。一般,應用程序的全部組件都運行在給應用程序建立的默認進程中。它有與應用程序包相同的名稱。<application>元素的process屬性可以給其全部的組件設置一個不一樣的默認進程。可是每一個組件都可以用它們本身的process屬性來覆蓋這個默認設置,從而容許把應用程序分離到不一樣的多個進程中。
若是這個屬性值是用「:」開頭的,那麼在須要這個提供器的時候,系統就會給這個應用程序建立一個新的私有進程,而且對應的Activity也要運行在那個私有進程中。若是用小寫字母開頭,那麼Activity則會運行在一個用這個屬性值命名的全局進程中,它提供了對內容提供器的訪問權限。這樣就容許不一樣應用程序的組件可以共享這個進程,從而減小對系統資源的使用。
android:readPermission
這個屬性用於設置查詢內容提供器的數據時,客戶端所必需要有的權限。
android:syncable
這個屬性用於設定內容提供器控制下的數據是否要與服務器上的數據進行同步,若是設置爲true,則要同步,不然不須要同步。
android:writePermission
這個屬性用於設置修改內容提供器的數據時,客戶端所必需要有的權限。