[1] 標準前綴,用來講明一個Content Provider控制這些數據,沒法改變的
ContentProvider(內容提供者)的scheme已經由Android所規定, scheme爲:content://
[2] URI的標識,它定義了是哪一個Content Provider提供這些數據
對於第三方應用程序,爲了保證URI標識的惟一性,它必須是一個完整的、小寫的 類名。
主機名(或叫Authority)用於惟一標識這個ContentProvider,外部調用者能夠根據這個標識來找到它。
備註:爲了能讓其餘應用找到該ContentProvider ,ContentProvider 採用了authorities(主機名/域名)對它進行惟一標識,你能夠把ContentProvider看做是一個網站(想一想,網站也是提供數據者),authorities 就是他的域名。
[3] 路徑(path)能夠用來表示咱們要操做的數據,路徑的構建應根據業務而定
Content Provider使用這些路徑來肯定當前須要生什麼類型的數據,URI中可能不包括路徑,也可能包括多個
以下:
要操做person表中id爲10的記錄,能夠構建這樣的路徑:/person/10
要操做person表中id爲10的記錄的name字段, person/10/name
要操做person表中的全部記錄,能夠構建這樣的路徑:/person
要操做xxx表中的記錄,能夠構建這樣的路徑:/xxx
[4] 若是URI中包含,表示須要獲取的記錄的ID;若是沒有ID,就表示返回所有
固然要操做的數據不必定來自數據庫,也能夠是文件等他存儲方式,以下:
要操做xml文件中person節點下的name節點,能夠構建這樣的路徑:/person/name
若是要把一個字符串轉換成Uri,可使用Uri類中的parse()方法,以下:
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
因爲URI一般比較長,並且有時候容易出錯,切難以理解。因此,在Android當中定義了一些輔助類,而且定義了一些常量來代替這些長字符串,例如:People.CONTENT_URI