【问题标题】:Associating certain file extension to my android application将某些文件扩展名关联到我的 android 应用程序
【发布时间】:2011-08-11 18:15:36
【问题描述】:

我无法将我的自定义文件扩展名与我正在开发的 android 应用程序相关联。在我的 android 清单文件中,我有以下内容:

<data android:scheme="file" android:mimeType="*/*" android:pathPattern="*.*\\.myFileExt" />
<data android:scheme="content" android:mimeType="*/*" android:pathPattern="*.*\\.myFileExt" />  

它有点工作。让我解释。我的 gmail 中有一个文件(向我自己发送了一个文件),它具有正确的扩展名,所以当我从手机的浏览器下载它并单击打开时,它会正确打开我的应用程序,但是如果我浏览该文件路径;文件所在的位置,并尝试打开它,我的手机说没有应用程序可以打开此文件类型。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 您的文件浏览器可能有问题...
  • 我看到了同样的事情。我有兴趣看看有没有答案。我不知道@user814628 正在使用什么,但我在 CM7 上遇到了同样的问题
  • 在 Galaxy 平板电脑上测试,我认为文件资源管理器没有问题,我使用的是软件自带的本地文件资源管理器(即 myFiles)文件夹来浏览文件跨度>
  • 您的 filter-sn-p 太短。您应该包含整个

标签: android android-manifest file-extension


【解决方案1】:

有些情况有点棘手,我决定使用:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="file" />                               
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.myFileExt" />
        <data android:host="*" />
    </intent-filter>

这有时会失败,因为有时只使用更全局的 mime 类型(在我的例子中是 XML):

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:mimeType="text/xml" />
    </intent-filter>

【讨论】:

  • 那没有帮助,不过还是谢谢。我还是有同样的问题
【解决方案2】:

在这个问题上花了几个小时后,我终于想出了这个解决方案(AAA 是文件扩展名):

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="*/*" />
    <data android:scheme="file" />
    <data android:host="*" />
    <data android:port="*" />
    <data android:pathPattern=".*..*..*..*..*.AAA" />
    <data android:pathPattern=".*..*..*..*.AAA" />
    <data android:pathPattern=".*..*..*.AAA" />
    <data android:pathPattern=".*..*.AAA" />
    <data android:pathPattern=".*.AAA" />
</intent-filter>

所有这些pathPattern 的原因是,如果您的文件名中有一个点,那么.*.AAA 的一般形式将与文件名不匹配。

【讨论】:

  • 谢谢,但由于某种原因这不起作用。例如,我使用的典型文件名是 filename.myFileExt。它存在的位置并不重要,对吧?这不应该发生,但我不知道为什么会这样。
  • 这太疯狂了。最重要的是,文字点是\\.——尝试将所有属性放在同一个数据元素中。
  • @RobertSiemer 你的意思是这样的.*\\.AAA 吗?
  • 是的。 – 将其缩减为一个 pathPattern 后,将其放入一个 &lt;data ... /&gt;。 – 如果我没记错的话,Android 文档似乎建议在文档的一个位置将其拆分为多个数据元素(我认为这是错误的)。
  • 找到解决方案了吗?
【解决方案3】:

您的 filter-sn-p 太短,无法检查它是否有错误。您应该包含整个

你的 pathPattern 中有一个错误:它不能以星号开头,例如*.* 是错误的。这里那个糟糕的 Android glob 匹配只处理 ..*x* (最后一个匹配“”,“x”......和“xxxxxx”,......)

此外,缺少“主机”属性。如果缺少 scheme 或 host,pathPattern 将毫无意义。

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多