2014-06-12 34 views
9

內容提供商權威機構的原因是什麼?安卓內容提供商權威機構

如何/爲什麼我想要使用它們,而不是我必須在清單中聲明它們?

我試着在這個問題上做我的功課,並且無法找到一個體面的,有凝聚力的討論這個話題。 這是我能找到的最好的(在additi上對Android開發的四本書我自己):

  1. https://stackoverflow.com/search?q=content+provider+authority
  2. Content Providers, Authority and and URI matching
  3. Get a list of available Content Providers
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html
+1

其用於識別特定供應商e。 G。 content://your.authority – pskink

回答

15

管理局用於與w ith特定內容提供商,這意味着它必須是唯一的。這就是爲什麼good practice將其聲明爲域名(反向)以及包含提供程序的包的名稱,這種方式不太可能是其他開發人員創建具有聲明相同權限的內容提供程序的應用程序。

content://authority-name/data-in-the-provider 

它的工作原理類似於域在:

您在清單中聲明它使您的應用程序和其他應用程序(如果你讓他們)可以在URI形式通過內容提供商操縱 數據的HTTP URL:

http://domain-name/data-in-the-site 
+0

那麼這是否意味着如果我的應用程序中有多個提供程序,每個提供程序都應該位於它自己的包中? –

+0

當局需要對每個內容提供商都是唯一的 – ILovemyPoncho

+0

簡單但功能強大的解釋,沒有任何一組bla bla code。 – Nirmal

1

我也在尋找解釋和補充解答ILovemyPoncho提供的,我打這個特殊的answer我引述:

什麼是android:權威機構要求?

供應商的系統範圍唯一標識符。或更好的全球 獨特。所有供應商都在系統註冊,他們需要 是唯一的,或者想要使用相同名稱的第二個應用不能安裝 。

您使用字符串中的一端與您的供應商通過 的烏里像

開放的URI = Uri.parse通信( 「內容://」 + 「your.authoritiy.string」)

讓我們這樣說吧:有一隻無形的手可以方便地向您的應用程序的ContentProvider發送請求。

例如:

Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values); 

基本上,你說這裏的Android操作系統是什麼賦予的URI包含您在XML中定義的權限插入數據。操作系統將搜索這個特定的內容提供商並將請求發送給它。您將調用ContentProvider上的方法insert,並且您必須匹配URI才能相應地處理它。

另外,如果你的內容提供商太簡單了,其他人也有類似的權限。我沒有遇到過我提到的那兩個問題,但我認爲這不會令人愉快。

有權確保操作系統知道哪個提供程序將數據提供給請求的應用程序,並確保提供程序提供該數據。