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

Bar*_*rry 5 android android-intent android-activity

我很难将我的应用与特定的文件类型(.stl)相关联.保荐这里凯文没有任何效果.尝试从文件管理器启动文件时,我的应用程序不是建议的选项之一.

他的代码是:

<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>
Run Code Online (Sandbox Code Playgroud)

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

系统似乎没有意识到我的应用程序可用于打开此类文件.我做了些蠢事吗?

非常感谢任何建议.

编辑:

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

<data android:scheme="file" 
      android:mimeType="*/*" 
      android:pathPattern=".*\\.stl" />
Run Code Online (Sandbox Code Playgroud)

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

Com*_*are 2

我正在努力将我的应用程序与特定文件类型(.stl)关联起来。

一般来说,Android不使用文件扩展名来指示类型。Android 使用 MIME 类型来指示类型。

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

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

.stl步骤#1:确定与文件关联的MIME 类型

步骤 #2:在<activity>元素中使用该 MIME 类型作为android:mimeType属性

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

当然,第三步是问题所在。

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

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