Permission Denial: opening provider 隐藏的android:exported属性的含义

场景:android4.2 在使用到 ContentProvider 的时候遇到的问题,报错: Permission Denial: opening provider  uid=10033) ....  that is not exported from uid 10036 

在AndroidManifest.xml 中 android:exported 属性,这个属性用于指示该服务是否能被其他程序应用组件调用或跟他交互; 取值为(true | false),如果设置成true,则能够被调用或交互,否则不能;设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。

重:它的默认值是依赖于该服务所包含的过滤器

        (1)如果没有过滤器则意味着该服务只能通过指定明确的类名来调用,也就是说该服务只能在应用程序内部使用(因为其他外部使用者不会知道该服务的类名),此时它的默认值是false

        (2)如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。

 

附: 这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体

你可能感兴趣的:(Permission,Provider,opening,Denial,androidexported)