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

我想宣传我的应用程序能够查看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和我的app(Rollout PdfEditor)都符合意图。 这是Intent Interceptor的输出:

动作:android.intent.action.VIEW

DATA:file:///storage/sdcard0/Download/download.pdf TYPE:application / pdf

标志:FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_PREVIOUS_IS_TOP

EXTRAS:EXTRA 1:Class:java.lang.Boolean Key:preview Value:false EXTRA 2:Class:java.lang.String Key:key_filename Value:/storage/sdcard0/Download/download.pdf EXTRA 3:Class:android。 net.Uri $ HierarchicalUri Key:android.intent.extra.STREAM EXTRA 4:Class:java.lang.Integer Key:sort_order Value:0

2活动与此目的相匹配:Polaris Viewer 4.1(com.infraware.polarisviewer4 - com.infraware.polarisoffice4.OfficeLauncherActivity)Rollout PdfEditor(com.example.rolloutpdfeditor - com.example.rolloutpdfeditor.MainActivity)>

author: chancelot
采纳答案:

您缺少IntentFilter必需的<category />标签! 如果你看一下<category />的文档,它会说:

注意:要接收隐式意图,必须在intent过滤器中包含CATEGORY_DEFAULT类别。 方法startActivity()和startActivityForResult()将所有意图视为已声明CATEGORY_DEFAULT类别。 如果您未在意图过滤器中声明它,则不会将隐式意图解析为您的活动。

所以你总是必须包含android.intent.category.DEFAULT作为IntentFilter类别才能工作。 如果您希望应用程序能够处理来自浏览器或其他应用程序的pdf链接,您还需要包含android.intent.category.BROWSABLE 。 您可以在此处找到有关BROWSABLE文档。 它写道:

CATEGORY_BROWSABLE
目标活动允许自己由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>

我想你错过了这两个类别。


参考更多解答: How do I make my app appear in app chooser? ,转载请保留出处如何让我的应用程序出现在应用程序选择器中?及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:java