将文件类型与 Android 应用程序关联失败
我正在努力将我的应用程序与特定文件类型 (.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>
除了我有stl而不是pdf)。我已经尝试了我能找到的关于这个主题的所有变体。
系统似乎不知道我的应用程序可以打开此类文件。我是不是在做蠢事?
非常感谢您的任何建议。
编辑:
我有答案。基本上,您必须声明您允许任何旧的 mimetype 并依赖于文件扩展名。使用“正确的”mimetype(应用程序/sla)不起作用。这有效:
<data android:scheme="file"
android:mimeType="*/*"
android:pathPattern=".*\\.stl" />
现在,当我在 Astro 中选择一个文件时,系统会建议我的应用程序将打开此类文件。
I'm struggling to associate my app with a particular file type (.stl
). A recommendation here from Kevin doesn't have any effect. When trying to launch a file from a file manager, my app isn't one of the options suggested.
His code is:
<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>
(Except I have stl not pdf). I've tried all the variations on this theme I can find.
The system seems unaware that my app is available to open this kind of file. Am I doing something stupid?
Many thanks for any suggestions.
EDIT:
I have the answer. Basically you have to state that you are allowing any old mimetype and relying on the file extension. Using the 'correct' mimetype (application/sla) didn't work. This works:
<data android:scheme="file"
android:mimeType="*/*"
android:pathPattern=".*\\.stl" />
Now when I select a file in Astro my app is suggested as one which will open this kind of file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,Android不使用文件扩展名来指示类型。 Android 使用 MIME 类型来指示类型。
那么,唯一有保证的可靠答案是:
步骤 #1:确定
.stl
文件与关联的 MIME 类型步骤 #2:在您的< 中使用该 MIME 类型
android:mimeType
属性的 /code> 元素步骤 #3:强制每个文件管理器作者在遇到
.stl
文件时实现对您的 MIME 类型的支持当然,#3 是问题所在。
Android 与 iOS 和其他操作系统一样,正在拼命向用户隐藏“文件”的概念。这就是为什么 Android 中没有内置文件管理器,为什么很少有设备捆绑文件管理器,以及为什么操作系统中很少支持这一概念。
欢迎您尝试在
code> 元素来支持基于文件扩展名的内容,尽管我不确定这是否有效。您可能还需要在该元素中使用
android:host="*"
—— Android 本身不使用pathPattern
作为file
方案,并且我正在检查的第三方代码以两种方式显示该元素。再说一遍,我不知道它是否有效。Generally, Android does not use file extensions to indicate type. Android uses MIME types to indicate type.
Well, the only guaranteed-solid answer is:
Step #1: Determine the MIME type that
.stl
files are associated withStep #2: Use that MIME type in your
<activity>
element for theandroid:mimeType
attributeStep #3: Force each and every file manager author to implement support for your MIME type for when they encounter
.stl
filesStep #3, of course, is the problem.
Android, like iOS and other operating systems, are trying desperately to hide the concept of "files" from the user. That is why there is no file manager built into Android, why few devices bundle one, and why there is little support for the concept in the OS.
You are welcome to try to use
<data android:scheme="file" android:pathPattern=".*\\.stl" />
in your<data>
element to support things based on file extension, though I'm not sure if that works well. You might also needandroid:host="*"
in that element -- Android itself does not usepathPattern
for thefile
scheme, and the third-party code I am examining shows the element both ways. Again, I have no idea if it works.