2011-01-13 71 views
0

這可能是一個簡單的問題,但我很難直接找到答案。存儲在Android項目中的內容提供者在哪裏?

我已經創建使用Eclipse ADT Android的一個項目,在其自己單獨的包裝內容提供商。該軟件包包含在整個項目的src中。當修改的AndroidManifest.xml我包括這爲<application孩子>:

<provider android:name="JobProvider" 
     android:authorities="dsndata.sds2Mobile.provider.JobProvider" /> 

將使用提供商的代碼是在一個單獨的包也放在src

將在其中儲存的最佳場所提供者?在與使用它的源代碼包相同的包中?此外,什麼是正確的值的android:name和android:權限?我確定它們根據提供商的存儲位置而有所不同。

+0

不知道具體的答案,但我想,這可能是更好地管理內容提供​​商的代碼作爲一個單獨的項目,特別是當它比主項目更改並不頻繁。我有很多測試數據,所以我想讓我的主要項目的apk文件很小,不包含它。 – Emile 2011-01-13 21:39:31

回答

1

你可以把你喜歡的地方供應商。如果您正在編寫一個爲您的應用程序存儲數據的提供程序(僅適用於您的應用程序,並且只有您的應用程序使用該應用程序),那麼只需在自己的程序包中使用應用程序代碼即可。通常,'provider'是包名。

至於名字和權威,看到Manifest documentation

的android:命名實現內容提供商, 的ContentProvider的子類 的名稱。這 應該是一個完整的類名 (如, 「com.example.project.TransportationProvider」)。 然而,作爲簡寫,如果名稱的第一個字符 是一個時期,它 被附加到在該元件中指定的包名稱 。 沒有默認值。該名稱必須爲 指定。

安卓當局標識內容提供商 的職權範圍 數據的一個或多個 URI機構的列表。多個權威機構 通過分號與 分號列出。爲了避免衝突, 機關名稱應使用 Java風格的命名約定(如 com.example.provider.cartoonprovider)。 通常,它是 ContentProvider子類的名稱。沒有 默認值。至少必須指定一個權限 。

內容管理機構是一個唯一的字符串,用於將content:// uris(uri到數據)映射到您的類。 ContentResolver使用該映射來確定如何將指定的請求(通過URI標識)提供給正確的類(您的)。因此需要一個唯一的字符串。

+0

謝謝。這是我制定的,但很高興得到確認。 :P – Lunchbox 2011-03-08 16:23:17

0

你可以存儲你的供應商在你的application.it任何地方,取決於什麼是您的URI名的ContentProvider提供class.Always記得在你的應用程序的URI名稱使用必須有唯一的授權和路徑。

Android:name是您的Content Provider類名稱及其包名 和Android:權限是您的URI內容名稱,您的提供者可用。 以獲得更多信息 http://marakana.com/s/post/1375/android_content_provider_tutorial