2011-04-11 26 views
3

在Android上查詢ContentProvider時,通過爲該ContentProvider提供「內容URI」來指定感興趣的ContentProvider。當多個ContentProvider服務於相同的URI時會發生什麼,有意?或惡意?多個ContentProvider可以提供相同的URI嗎?

當試圖在手機上打開圖片時,我看到它會提示可以「處理」圖片的應用程序。這裏會發生同樣的事情嗎?

回答

6

多個ContentProviders不能這樣做。在清單中使用元素註冊內容提供者的第一個應用程序可以控制URI模式。我很確定,如果您嘗試添加使用相同URI模式的其他提供程序,您將收到安裝錯誤。 Android跟蹤提供者和URI。

當你看到多個應用程序用於處理文件或情況的提示,這是因爲應用程序已經與包括 android.intent.category.CATEGORY_ALTERNATIVE或android.intent-category.CATEGORY_SELECTED_ALTERNATVE孩子指定的。實質上,這個應用程序或應用程序聲明自己是兒童中指定動作的替代方案。這允許用戶有多種選擇來處理一種類型的數據。

提供替代方案很有意義:用戶可能想要編輯圖片,通過Twitter分享或通過電子郵件發送。

請注意,兩個內容提供者可以做同樣的事情,但他們不能使用相同的URI。一個應用程序必須有意識地選擇使用哪一個,或者提供一種在兩者之間進行選擇的機制。

+2

是的,我通過實際嘗試使用「content:// contacts」URI註冊ContentProvider進行驗證。嘗試安裝APK時出現安裝錯誤。 – srinivas1729 2011-04-12 22:06:29

相關問題