Permission Denial: opening provider com.xxc.day4(包名).TestContentProvider from ProcessRecord

我叫阿狸貓發表於2014-05-23

場景:android4.2 在使用到 ContentProvider 的時候遇到的問題,報錯: Permission Denial: opening provider  uid=10033) ....  that is not exported from uid 10036 

在內容提供者所在的AndroidManifest.xml 中註冊的provider標籤中新增 android:exported=true 屬性,這個屬性用於指示該服務是否能被其他程式應用元件呼叫或跟他互動; 取值為(true | false),如果設定成true,則能夠被呼叫或互動,否則不能;設定為false時,只有同一個應用程式的元件或帶有相同使用者ID的應用程式才能啟動或繫結該服務。

重:它的預設值是依賴於該服務所包含的過濾器

        (1)如果沒有過濾器則意味著該服務只能通過指定明確的類名來呼叫,也就是說該服務只能在應用程式內部使用(因為其他外部使用者不會知道該服務的類名),此時它的預設值是false

        (2)如果至少包含了一個過濾器,則意味著該服務可以給外部的其他應用提供服務,因此預設值是true。

 

附: 這個屬性不是限制把服務暴露給其他應用程式的唯一方法。還可以使用許可權來限制能夠跟該服務互動的外部實體


相關文章