【问题标题】:associate file type with android app fails将文件类型与 android 应用程序关联失败
【发布时间】:2011-12-10 01:05:24
【问题描述】:

我很难将我的应用与特定文件类型 (.stl) 关联起来。来自 Kevin 的推荐 here 没有任何效果。尝试从文件管理器启动文件时,我的应用不是建议的选项之一。

他的代码是:

<activity name="com.mycompany.MyActivity">
    <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="application/pdf" />
    </intent-filter>
</activity>

(除了我有 stl 而不是 pdf)。我已经尝试了所有我能找到的关于这个主题的变体。

系统似乎不知道我的应用可以打开此类文件。我在做傻事吗?

非常感谢您的任何建议。

编辑:

我有答案。基本上,您必须声明您允许任何旧的 mimetype 并依赖文件扩展名。使用“正确”的 mimetype (application/sla) 不起作用。这有效:

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

现在,当我在 Astro 中选择一个文件时,我的应用程序被建议为可以打开此类文件的应用程序。

【问题讨论】:

    标签: android android-intent android-activity


    【解决方案1】:

    我很难将我的应用与特定文件类型 (.stl) 关联起来。

    通常,Android 不使用文件扩展名来指示类型。 Android 使用 MIME 类型来表示类型。

    尝试从文件管理器启动文件时,我的应用不是建议的选项之一。

    嗯,唯一有保证的可靠答案是:

    第 1 步:确定 .stl 文件关联的 MIME 类型

    第 2 步:在 &lt;activity&gt; 元素中为 android:mimeType 属性使用该 MIME 类型

    第 3 步:强制每个文件管理器作者在遇到 .stl 文件时实现对您的 MIME 类型的支持

    第 3 步当然是问题所在。

    Android 与 iOS 和其他操作系统一样,都在拼命试图向用户隐藏“文件”的概念。这就是为什么 Android 中没有内置文件管理器,为什么很少有设备捆绑一个,以及为什么操作系统中很少支持这个概念。

    欢迎您尝试在您的 &lt;data&gt; 元素中使用 &lt;data android:scheme="file" android:pathPattern=".*\\.stl" /&gt; 来支持基于文件扩展名的内容,但我不确定这是否有效。您可能还需要在该元素中使用android:host="*"——Android 本身不使用pathPattern 作为file 方案,并且我正在检查的第三方代码以两种方式显示该元素。同样,我不知道它是否有效。

    【讨论】:

    • 谢谢@CommonsWare,那里有关于Android对“文件”态度的有用信息......其他地方的另一个答案有一个版本,它允许我从http源正确抓取文件,但仍然不是Astro(文件管理器)。然而,其他几个 stl 阅读器已经设法做到了——它们是在选择 stl 文件时提供的——所以它一定是可能的。我还在寻找答案……
    • 是的,对不起,我不是故意忽略这一点,我之前尝试过这些行但没有成功,但我找到了答案! (下)。
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2012-01-29
    • 2011-02-15
    • 2018-02-25
    相关资源
    最近更新 更多