我想宣传一下,我的应用程序能够查看 pdf 文件,这样当从文件管理器中选择 pdf 文件时,它就会出现在应用程序选择器中。
这是我的意图过滤器的样子
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>
每当我从文件管理器打开 pdf 时,它会自动选择另一个名为 Polaris Viewer 的 pdf 应用程序。
我检查以确保 Polaris 不是应用程序设置下的默认应用程序。它说没有设置默认值。
另外,我下载了一个名为 Intent Intercept 的第三方应用程序。如果我从文件管理器中选择 pdf 文件,则会出现应用程序选择器,其中显示 Polaris 和意图拦截。如果我选择意图拦截,它会告诉我 Polaris 和我的应用程序 (Rollout PdfEditor) 都符合意图。这是意图拦截器的输出:
行动:android.intent.action.VIEW
数据:文件:///storage/sdcard0/Download/download.pdf
类型:申请表/pdf
标志:
FLAG_ACTIVITY_FORWARD_RESULT
FLAG_ACTIVITY_PREVIOUS_IS_TOP
附加功能:
额外1:
类:java.lang.Boolean
按键:预览
值:假
额外2:
类:java.lang.String
密钥:密钥_文件名
值:/storage/sdcard0/Download/download.pdf
额外3:
类: android.net.Uri$HierarchicalUri
密钥:android.intent.extra.STREAM
额外4:
类:java.lang.Integer
键:排序顺序
值:0
2 项活动符合此意图:
北极星查看器 4.1(com.infraware.polarisviewer4 - com.infraware.polarisoffice4.OfficeLauncherActivity)
推出 PdfEditor (com.example.rolloutpdfeditor - com.example.rolloutpdfeditor.MainActivity) >
您缺少必填项<category />
标签来自你的IntentFilter
!如果你查看文档<category />
它说:
注意:为了接收隐式意图,您必须包括
意图过滤器中的 CATEGORY_DEFAULT 类别。方法
startActivity() 和 startActivityForResult() 将所有意图视为
他们声明了 CATEGORY_DEFAULT 类别。如果您不声明
在您的意图过滤器中,没有隐式意图将解析为您的
活动。
所以你总是必须包括android.intent.category.DEFAULT
作为类别IntentFilter
根本不去工作。如果您希望您的应用程序能够处理来自浏览器或其他应用程序的 pdf 链接,您还需要包括android.intent.category.BROWSABLE
。您可以找到有关的文档BROWSABLE
here http://developer.android.com/guide/components/intents-filters.html#Building。上面写着:
类别_可浏览
目标活动允许自身由 Web 浏览器启动,以显示链接引用的数据 - 例如图像或电子邮件消息。
尝试这个IntentFilter
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" />
</intent-filter>
我认为您缺少这两个类别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)