关联文件类型与Android应用程序失败

时间:2011-10-18 11:56:05

标签: android android-intent android-activity

我很难将我的应用与特定文件类型(.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>

(除非我不是pdf)。我已经尝试了我能找到的这个主题的所有变化。

系统似乎没有意识到我的应用程序可以打开这种文件。我做了些蠢事吗?

非常感谢任何建议。

修改

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

嗯,唯一可靠的答案是:

步骤1:确定.stl个文件与

相关联的MIME类型

步骤2:在<activity>元素的android:mimeType元素中使用该MIME类型

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

步骤#3当然是问题所在。

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

我们欢迎您尝试在<data android:scheme="file" android:pathPattern=".*\\.stl" />元素中使用<data>来支持基于文件扩展名的内容,但我不确定这是否有效。您可能还需要该元素中的android:host="*" - Android本身不会将pathPattern用于file方案,而我正在检查的第三方代码会以两种方式显示该元素。我再也不知道它是否有效。