如何让我的应用程序出现在应用程序选择器中?

2024-05-02

我想宣传一下,我的应用程序能够查看 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(使用前将#替换为@)

如何让我的应用程序出现在应用程序选择器中? 的相关文章

随机推荐