多文件扩展名/ mimetype意图
男装,
我试图获得它,以便我的Android应用程序可以响应正在打开的文件(通过匹配扩展名)和MIME类型(因此它们将从浏览器中运行)。
我按照这里的建议:
Android意图过滤器的特定文件扩展名?
但仍然没有运气。
我的android清单文件中的相关部分如下所示:
<activity android:name="MuPDFActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.ms-xpsdocument"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/pdf"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/x-cbz"/>
</intent-filter>
<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=".*.xps"/>
<data android:host="*"/>
</intent-filter>
<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=".*.pdf"/>
<data android:host="*"/>
</intent-filter>
<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=".*.cbz"/>
<data android:host="*"/>
</intent-filter>
</activity>
正如你所看到的,我希望为.pdf,.xps和.cbz文件调用该应用程序,并且还可以使用相关的mimetypes文件。 这里的本地测试似乎表明,.pdf和application / pdf部分都可以工作,但尽可能地尝试.xps(和大概.cbz)部分不是。
我在这里错过了很明显的东西吗 每个活动只能有一个mimetype /文件模式吗?
任何帮助将非常感激。
谢谢,
知更鸟
afaik,而宁可像那样(一个具有各种值的过滤器):
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.ms-xpsdocument"/>
<data android:mimeType="application/pdf"/>
</intent-filter>
另外,是否有可能mime类型不正确?
多个<data>
是逻辑OR,并分别处理。 所以你有一个android:scheme
标签,但没有android:pathPattern
和一个android:pathPattern
但没有android:host
等。 所以没有一个<data>
标签是完整的,并且会有所帮助。
你应该使用:
<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"
android:mimeType="*/*"
android:pathPattern=".*.cbz"
android:host="*"
></data>
</intent-filter>
您可以拥有第二个<data>
但是如果您要使用android:pathPattern
则它将再次需要所有四个属性,因为所有四个属性对于Android 4都是必需的。 (他们没有使用较旧的Android版本)
每个活动只能有一个mimetype /文件模式吗?
不可以。您自己承认有两个人在工作(PDF x 2)。
我在这里错过了很明显的东西吗
我怀疑BROWSABLE
元素会对你拥有的元素有很大的帮助,而你需要为其他元素提供帮助。 BROWSABLE
适用于浏览器,它将沿着MIME类型路径。
上一篇: Multiple file extension/mimetype intent
下一篇: How do I call a stored procedure with unconventional parameters?