我的问题是如何正确指定
Activity
处理清单文件中的不同 MIME 类型。我正在尝试创建一个 Activity
来处理不同的档案,因此我将其添加到清单中,如下所示:
<activity
android:name=".activity.ArchiveActivity"
android:label="@string/title_activity_archive" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/zip" />
<data android:mimeType="application/gzip" />
<data android:mimeType="application/x-tar" />
<data android:mimeType="application/java-archive" />
</intent-filter>
</activity>
不幸的是,这仅适用于 .zip 文件。例如,当我尝试从另一个应用程序打开 .jar 存档时,它告诉我无法找到合适的应用程序。预先感谢。
编辑 事实证明,Android 无法理解最后三种 MIME 类型,因此我认为无法使用 Intents 在 Android 中打开 .jar 文件。
尝试这样的事情:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/zip" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/gzip" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/x-tar" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/java-archive" />
</intent-filter>
聚会迟到了,但以防万一互联网上有人会绕过这个帖子。
2022 年,根据文件: 安卓文档
您可以创建一个包含多个
、<action>
或<data>
实例的过滤器。如果这样做,您需要确保该组件可以处理这些过滤器元素的任何和所有组合。<category>
所以你不必为每个 MIME 类型创建单独的意图过滤器,对我来说这段代码是有效的:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
<data android:mimeType="image/jpeg" />
</intent-filter>