android - Lint 警告 ExportedContentProvider

标签 android android-contentprovider android-lint

我有一个导出的 ContentProvider,我用它来访问用户想要通过其他应用共享的图像。简单地说,用户点击我的应用程序中的分享按钮,我向她展示了一个可以分享图像的应用程序列表,她选择了一个应用程序(它调用我的 ContentProvider 来获取基于URI)。

但是,有一个 lint 警告 ExportedContentProvider 说我应该使用权限。如果我确实设置了权限,其他应用程序如何知道访问图像的权限?

最佳答案

Lint 所谈论的权限与“访问图像”无关。它更多是关于“使用您的 ContentProvider”。

当用户选择一个应用程序来分享图片时,您将为该应用程序提供一个 URI,而不是您的 ContentProvider。像这样的东西:

intent.putExtra(Intent.EXTRA_STREAM, uri);

确保您为共享应用提供的 Uri 代表图像文件的路径。 不是您用来查询提供商的 URI。

为了避免 Lint 警告,您可以添加

android:exported="false"

provider tag你的 list 。

您的提供者将只能在您的应用程序中使用。

关于android - Lint 警告 ExportedContentProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11688500/

相关文章:

android - 尝试构建 Android 应用程序时 Cordova 失败并出现错误 "Command failed with exit code 2"Linux

android - 警告 : This <FrameLayout> can be replaced with a <merge> tag

java - 禁用警告变量可能尚未初始化?

java - Android:如何通过蓝牙连接传输视频和音频?

java在另一个类中编辑文本字段

android 获取联系人详细信息,例如号码和缩略图

android - 与普通的 SQLIte 存储相比,使用 ContentProvider 有什么优势?

android 内容提供商在提供商崩溃时的稳健性

java - 创建自定义 Lint Java 检测器

android - 将可绘制对象设置为 android :windowBackground