具有一个活动的多文件扩展名/ mimetype intent-filters

Rob*_*tts 8 android android-manifest android-intent

男装,

我正在努力让我的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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我希望为.pdf,.xps和.cbz文件调用该应用程序,以及具有相关mimetypes的文件.这里的局部测试似乎表明.pdf和application/pdf部分都在工作,但尽可能尝试,.xps(和大概是.cbz)部分都没有.

我错过了一些明显的东西吗?每个Activity只能有一个mimetype/file模式吗?

任何帮助将非常感激.

谢谢,

知更鸟

Com*_*are 0

每个活动只能有一种 mimetype/文件模式吗?

不。据您自己承认,有两个正在工作 (PDF x 2)。

我在这里遗漏了一些明显的东西吗?

我怀疑这个BROWSABLE元素对你拥有它的人会有多大好处,而你也需要它对其他人来说。BROWSABLE适用于浏览器,它将沿着 MIME 类型路径前进。