我在我的android应用程序中使用ContentProvider
在应用程序之间共享数据库。为了共享数据库,我需要在AndroidManifest.xml
中添加提供者访问权限,如下所示:
<provider
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />
我已成功添加并实施,但<provider/>
标记中显示的警告消息如此“导出的内容提供商可以提供对潜在敏感数据的访问”。它将来会引起任何安全问题吗?
答案 0 :(得分:37)
如果您只想在应用内部访问内容提供商,只需添加
即可android:exported="false"
进入清单中的节点。
来自doc:
false:提供程序不可用于其他应用程序。设置android:exported =“false”以限制对应用程序的提供程序的访问。只有与提供商具有相同用户ID(UID)的应用程序才能访问它。
另一方面,如果您确实希望将数据公开给其他应用但,那么您的数据存储中也会包含敏感数据,请记住您可以拥有多个内容提供商,因此揭露“公开”的一个。
答案 1 :(得分:8)
此外,如果您确定要允许外部访问您的内容提供商并将警告静音,请添加tools:ignore="ExportedContentProvider"
e.g。
<provider
tools:ignore="ExportedContentProvider"
android:exported="true"
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />