【问题标题】:FileProvider - use default InternalStorage folder, filePaths ambiguityFileProvider - 使用默认的 InternalStorage 文件夹,filePaths 不明确
【发布时间】:2015-06-17 12:49:32
【问题描述】:

它在文档中说:

FileProvider 只能为以下文件生成内容 URI 您事先指定的目录。要指定目录, 在 XML 中指定其存储区域和路径,使用的子元素 元素。例如,以下路径元素告诉 您打算为图像请求内容 URI 的 FileProvider/ 您的私人文件区域的子目录。

 <paths xmlns:android="http://schemas.android.com/apk/res/android">
 <files-path name="my_images" path="images/"/>
 ... </paths>

如果我不想使用子目录,而是使用默认的内部存储目录怎么办?

  1. 这是文档中的示例文件路径 xml 文件:

    <files-path name="my_images" path="images/"/>
    
    <files-path name="my_docs" path="docs/"/>
    

当我在我的项目中使用它时,我得到“属性缺少 Android 命名空间前缀”

我应该添加它吗?是否有可能是文档中有错误,或者我在某个地方犯了错误?

【问题讨论】:

    标签: android


    【解决方案1】:

    如果我不想使用子目录,而是使用默认的内部存储目录怎么办?

    不要使用path 属性。

    当我在我的项目中使用它时,我得到“属性缺少 Android 命名空间前缀”

    我不知道是什么给了你这个信息。如果是 IDE,则可能是 IDE 中的错误。从技术上讲,我们甚至不需要命名空间声明,尽管 my sample app 也有它。

    我应该添加它吗?

    没有。 This sample app 没有它也能正常工作。

    【讨论】:

    • 所以应该是,那么呢?
    • @J.K.:正确。就个人而言,我选择了stuff 而不是whatever。 :-)
    • 最后一件事 - 我需要在哪里使用我在 files-path 中提供的名称(在我的情况下,在你的情况下)?
    • 为什么你的 FileProvider 叫 LegacyCompatFileProvider 而不是 android.support.v4.content.FileProvider?
    • @J.K.:因为我继承了FileProvider。有一些不幸的开发人员认为所有content:// Uri 值必须来自MediaStore,并尝试使用不存在的_data 列。 LegacyCompatFileProvider 覆盖query() 并使用LegacyCompatCursorWrapper 来提供一个空的_data 列,这提高了与其中一些应用程序的兼容性。在您的情况下(通过 Android 媒体 API 播放视频),这些都不需要。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多