多文件扩展名/ 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类型路径。

链接地址: http://www.djcxy.com/p/57359.html

上一篇: Multiple file extension/mimetype intent

下一篇: How do I call a stored procedure with unconventional parameters?