2011-06-06 115 views
-1

親愛的我很困惑的android應用程序中的內容提供商的使用。我通過各方面閱讀,但我仍然對內容提供商感到困惑..可以任何一個簡單的方式解釋它,如何使用它?問題了解內容提供商

內容提供商存儲和檢索數據,並使其可以訪問所有應用程序....這是什麼意思?

它可以意味着任何包名或相同的pakage名稱... 如果我正在製作另一個不同的包名稱的應用程序,然後該c.p.也可以在那個包裏找到?

+2

也格式化您的問題更清晰,你會得到更多的答案(避免請請,避免多個問號)。 – 2011-06-06 13:40:51

回答

1

如何使用它?

你其實並不直接使用,而是通過內容解析(這將根據你給它的URI,查詢正確的ContentProvider):

getContentResolver().query("content://com.myapp.myprovider/data/", ...); 

會找到你的內容提供商如果一個被註冊來處理匹配的URI:如果我做不同勢 包名的另一個應用程序那麼CP「內容//com.myapp.myprovider/data/」

在該包裝中是否也有 ?

如果您決定發佈內容提供程序,它可在您的應用程序之外使用(這是清單中的設置)。

使用c.p.的主要好處是什麼?

這是Android中常見的設計模式,用於訪問數據。主要好處是您可以抽象訪問您的數據並決定是否將其打開到其他應用程序。例如,如果沒有內容提供商,則無法訪問存儲在手機或手機通訊錄中的媒體。

0

由於軟件包是應用程序的唯一標識符,因此如何使用相同的軟件包名稱創建應用程序?如果這是你的問題,我想我已經回答了。如果你不瞭解別的東西 - 隨時提問。祝你好運!

P.S.考慮接受一些答案,你的接受率低。

4

好的,首先,當且僅當您想通過多個應用程序使用相同的數據時,纔會使用內容提供程序。如果你想在應用程序中實現它,你仍然可以使用它。 現在,根據定義,ContentProvider「內容提供者管理對結構化數據集的訪問,它們封裝數據並提供定義數據安全性的機制。」 (根據Android開發人員指南)

換句話說,它就像是一個新的抽象層,您將添加到您的數據,分配一個新的中間人會請求您要求的所有內容(讀取,寫入,更新數據庫,文件或Web服務)。這個中間人不僅適用於您,它還可用於其他應用程序,如果您在清單文件中將標記android:exported設置爲真<provider>

ContentProvider的需要你來實現:

  1. 合同:基本上是一個與你的表名公共靜態變量和這些表信息的領域類。
  2. 數據模型:通常是SQLite中的一個數據庫,但您可以使用SugarORM,GreenDao,Retrofit,本地文件等第三方庫來實現它。
  3. 您的自定義ContentProvider:擴展ContentProvider,並在此處將調用設置爲您的數據模型。

這是關於如何使自己的ContentProvider一個很好的教程: http://www.grokkingandroid.com/android-tutorial-writing-your-own-content-provider/

也有一些庫,這將幫助你自動創建一個ContentProvider的(我覺得很神奇,因爲它需要你這樣的10分鐘來設置一切,而不是從頭開始創建自己的ContentProvider,這可能需要幾天時間)。 我的最愛是Schematic: https://github.com/SimonVT/schematic

我希望它有幫助。親切的問候!