【发布时间】:2014-09-21 04:41:06
【问题描述】:
我想宣传我的应用能够查看 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 和 Intent Intercept 的应用程序选择器。如果我选择 Intent Intercept,它会告诉我 Polaris 和我的应用程序(Rollout PdfEditor)都符合意图。这是 Intent Interceptor 的输出:
动作:android.intent.action.VIEW
数据:file:///storage/sdcard0/Download/download.pdf 类型:应用程序/pdf
标志: FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_PREVIOUS_IS_TOP
附加: 额外1: 类:java.lang.Boolean 关键:预览 值:假 额外2: 类:java.lang.String 键:key_filename 值:/storage/sdcard0/Download/download.pdf 额外3: 类:android.net.Uri$HierarchicalUri 键:android.intent.extra.STREAM 额外4: 类:java.lang.Integer 键:排序顺序 值:0
2 项活动符合此意图: Polaris Viewer 4.1 (com.infraware.polarisviewer4 - com.infraware.polarisoffice4.OfficeLauncherActivity) 推出 PdfEditor (com.example.rolloutpdfeditor - com.example.rolloutpdfeditor.MainActivity) >
【问题讨论】:
-
Polaris Viewer 是否可能只是您对此类
Intents的默认应用程序?转到设置 -> 应用程序 -> Polaris Viewer,然后在“默认启动”下单击“清除默认值”。 -
正如我在帖子中所说,它说“没有设置默认值”。清除默认按钮不可点击。
-
那么您是否在另一台设备上测试过它?如果您的
Activity与Intent匹配,而另一个不是默认值,则应显示选择器对话框。 -
在另一台设备上尝试过,结果相同。只是这次是 Adobe Reader 而不是 Polaris。 Adobe Reader 再次没有设置默认值。
标签: java android pdf android-intent