如何让我的应用程序对打开 PDF 文件的隐式意图可见? 1.指定 PDF MIME 类型2.忽略缺少 URL 错误

问题描述

我想创建一个可以查看 PDF 文件的简单应用。

为了测试我是否删除了模拟器上的认 PDF 文件查看器,并且当我想打开 PDF 文件时,模拟器会显示 Can't open that file

如何让我的应用程序对该隐式意图可见,以便在我单击该 PDF 文件时使用/显示该应用程序?
我需要在 <intent-filter>添加什么 manifest.xml 配置(如果有)?

解决方法

这对我有用,你没有指定你的 sdk 版本而是检查它

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="*/*" android:host="*" android:pathPattern=".*.csv" />
</intent-filter>
,

@see javdromero's post

javdromero 的方法经过一些调整后对我有用。

1.指定 PDF MIME 类型

PDF 文件的 MIME 类型是 application/pdf,所以我们必须使用它:

android:mimeType="application/pdf"

可以忽略 android:host 属性,因为我们没有从网络上获取任何内容,也没有指定 android:scheme 属性。 android:pathPattern 属性也是如此。查看 <data> 元素的 documentation

这给我们留下了错误消息 Missing URL 并且文本为红色。

2.忽略缺少 URL 错误

Missing URL 错误涉及整个 <intent-filter> 元素,因为我们应该在那里指定 android:scheme 属性。
但我们不使用任何方案,因此我们导入 tools 命名空间并指定 tools:ignore 属性:

tools:ignore="AppLinkError"

这给我们留下了以下 <intent-filter> 元素配置:

<intent-filter tools:ignore="AppLinkUrlError">
    <action android:name="android.intent.action.VIEW"/>

    <category android:name="android.intent.category.DEFAULT"/>

    <data android:mimeType="application/pdf" />
</intent-filter>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...