问题描述
- 安卓ContentProvider和ContentReslover
-
如果一个应用程序里的ContentProvider声明是<provider android:name="com.book.story" android:authorities="com.book.story" android:exported="false"/>
其中有这个属性android:exported="false"
那么在另一个应用程序里可以用ContentReslover访问到数据库吗?
解决方案
摘一段网文
android:exported
这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值是true。
这个属性不是限制把服务暴露给其他应用程序的唯一方法。还可以使用权限来限制能够跟该服务交互的外部实体。
解决方案二:
声明如下 不知道怎么回事在我这里问题不显示这段代码 现在贴出来
<provider android:name="com.book.story" android:authorities="com.book.story" android:exported="false"/>
解决方案三:
不能,android:exported="false",则该服务不能够跨进程使用。改为true就好了
时间: 2024-11-16 08:08:19