单击android中的gmail通知时将我的应用程序隐藏在意图选择器对话框中

Posted

技术标签:

【中文标题】单击android中的gmail通知时将我的应用程序隐藏在意图选择器对话框中【英文标题】:hide my application in intent chooser dialog when click on gmail notification in android 【发布时间】:2017-05-27 03:49:11 【问题描述】:

当我单击任何类型的文件或单击 gmail 附件共享 android 设备中的任何文件时,我希望在选择器对话框中看到我的应用程序。所以为了实现这个功能,我使用了下面的意图过滤器。

<activity
            android:name=".activities.ShareWithAttachmentActivity"
            android:label="Adoddle"
            android:screenOrientation="sensorPortrait">
            <intent-filter>
                <!---->
                <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.SEND" />

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

                <!--<data android:mimeType="*/*" />-->
                <data android:mimeType="application/*" />
                <data android:mimeType="audio/*" />
                <data android:mimeType="image/*" />
                <data android:mimeType="message/*" />
                <data android:mimeType="multipart/*" />
                <data android:mimeType="text/plain" />
                <data android:mimeType="text/html" />
                <data android:mimeType="text/javascript" />
                <data android:mimeType="text/richtext" />
                <data android:mimeType="text/uri-list" />
                <data android:mimeType="text/xml" />
                <data android:mimeType="text/css  " />
                <data android:mimeType="video/*" />
            </intent-filter>
        </activity>

但是当我点击 gmail 通知 应用程序选择器对话框打开时,我可以在该选择器中看到我的应用程序。当我单击我的应用程序时,它会崩溃。根据我的要求,当我单击 gmail 通知 时,我的应用程序不应显示在该应用程序选择器对话框中。

我参考了下面的链接,但没有帮助我。

    Android: Registering Intent Filter to open email attachment with my app Android - Opening gmail attachment with my App Intent filter to download attachment from gmail apps on Android

【问题讨论】:

能否请您说明如何触发 gmail 通知应用选择器对话框? give &lt;data android:mimeType="application/*" /&gt; 触发 gmail 通知应用选择器对话框 【参考方案1】:

我找到了解决方案。当您单击 gmail 通知时,它的 mime 类型为 "application/gmail-ls"。因此,请在您的应用程序中排除这种 MIME 类型。所以删除&lt;data android:mimeType="application/*" /&gt; 并指定你想要过滤的任何类型。 (例如 application/zipapplication/msword 等)

<activity
            android:name=".activities.ShareWithAttachmentActivity"
            android:label="Adoddle"
            android:screenOrientation="sensorPortrait">
            <intent-filter>
                <!---->
                <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.SEND" />

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

<data
                    android:host="*"
                    android:mimeType="application/zip"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="application/vnd.ms-excel"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="application/msword"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="application/vnd.ms-powerpoint"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="application/pdf"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="audio/*"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="image/*"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="message/*"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="multipart/*"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/plain"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/html"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/javascript"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/richtext"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/uri-list"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/xml"
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="text/css  "
                    android:scheme="content" />
                <data
                    android:host="*"
                    android:mimeType="video/*"
                    android:scheme="content" />

            </intent-filter>
        </activity>

【讨论】:

【参考方案2】:

&lt;intent-filter&gt;中删除这两个动作

<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />

【讨论】:

问题已编辑。我也想在共享任何文件时看到我的应用程序。所以我无法删除此操作。 即使是分享你也不需要添加这些动作就知道了。如果您正在共享一个文件,那么您将打开相应的隐式意图来处理这种类型的文件。

以上是关于单击android中的gmail通知时将我的应用程序隐藏在意图选择器对话框中的主要内容,如果未能解决你的问题,请参考以下文章

通过单击android studio中的按钮将我的当前位置发送给所有用户

android应用程序中的推送通知

Android - 点击时 Firebase 通知会打开一个 Activity

Android:我的部分演员在未决意图中迷失了

在单击按钮时将数据插入 Android Studio 中的 SQlite 数据库

Android - 对收到的推送通知进行分组,如 Gmail