【问题标题】:Share Intent, inconsistent behaviour分享意图,不一致的行为
【发布时间】:2013-05-14 05:57:57
【问题描述】:

我不知道如何问这个问题。这不完全是一个问题,但在一些特定的场景中可以看到,让我这样说:

我开发了一个应用程序,它公开了 2 个分享意图,一个用于分享,另一个用于查看。

共享意图,共享具有自定义扩展名的文件。当我使用k9邮件应用分享应用时,它出现在附件中,但是使用默认的android邮件应用不显示附件中的文件。

另一方面,视图意图在我使用 ES 文件资源管理器时出现在共享列表中,但在我使用文件专家文件资源管理器时不出现。

我在 android manifest 中使用了mimeType="application/myCustomExtension" 来表示视图意图。将其更改为 mimeType="*/*"android:pathPattern=".*\\.CUSTOM_FILE_EXTENSION" 以及 android:hostandroid:scheme 使其出现在共享列表中,但也适用于所有其他文件,不仅适用于我的自定义扩展。

虽然这不完全是个问题,因为我的代码适用于某些文件管理器和电子邮件客户端,但不适用于某些。但是,我想知道是否有某种方法可以使它们在所有应用程序中保持一致。

此外,当我分享我的自定义扩展程序时,蓝牙选项也不会显示在我的分享意图中。我有蓝牙权限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

在清单中设置。

请在这件事上帮助我。

问候。

【问题讨论】:

    标签: android android-intent android-manifest share


    【解决方案1】:

    我想指出以下关于意图的事情。

    1. Intent 在运行时会像这样解析。例如:如果您指定 ACTION_SEND ,那么所有应用程序(无论是系统还是用户生成的应用程序)都在其清单中指定为 ACTION_SEND 的操作,它们将显示在该 Intent 中。

    所以对于 actionSend - 将 mime 设置为纯文本/文本 --- 在您的手机中打开 gmail 和默认邮件

    对于 mime---- text/html --opens 很多选项,包括 whatsapp 、 facebook 、 bluetooth

    因此,在这些应用程序显示后,您可以共享内容,由应用程序来解析您附加的数据。 你无法控制它。

    【讨论】:

    • 如果动作是 ACTION_SEND & ACTION_SEND_MULTIPLE 并且 mimeType 是*/* 蓝牙应用程序不应该出现怎么办?除此之外,默认邮件应用程序显示,但没有附加自定义扩展名的文件,虽然 pdf 或 doc 效果很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多