【问题标题】:Launch activity from email link从电子邮件链接启动活动
【发布时间】:2012-06-14 10:53:32
【问题描述】:

我拼命想要实现的是在用户单击通过电子邮件发送的链接时启动我的应用程序。用户将打开他/她的 android gmail 应用程序(在我的 2.3.3 Android 手机中,今天的版本是 2.3.6)并指示点击链接,以便我的应用程序可以启动并开始工作。

我已经阅读了 android 网站开发者专区的大量文档以及 SO 中的类似问题,当然也使用过 google-fu,但迄今为止没有工作答案,甚至不是来自 Android 团队本身,他们实际上正在使用 SO 作为事实上的 Q/A 地方。

我已经尝试将这个配置放入清单文件:

 活动>

它没有用,所以我也尝试编写我的自定义方案,即使 hackbod says not to,但也根本没有用。 另一种选择是拥有一个自定义网站,以便可以在指定 http 方案和主机的意图过滤器中使用“数据”标签,但这对于许多 不 有一个网站。

也许我错过了什么。我在做什么有可能吗?即:是否可以从 gmail android 应用程序的电子邮件中写入的链接启动活动?如果是,那么这种链接必须遵循什么结构/语法?我不敢相信这会如此奇怪。它在BB和iOS中使用没有任何问题。

任何帮助表示赞赏。 提前致谢。

【问题讨论】:

    标签: android android-intent uri


    【解决方案1】:

    用户将打开他/她的 android gmail 应用程序

    你无法知道这一点。用户可能正在使用任意数量的电子邮件客户端。它们不会都有相同的行为,尽管大多数人希望能相当一致地处理 http: 链接。

    但到目前为止还没有给出有效的答案

    是的,他们有。我个人是这样做的。

    另一种选择是拥有一个自定义网站,以便可以在指定 http 方案和主机的意图过滤器中使用“数据”标签,但这对于很多没有一个网站。

    建立一个网站需要几分钟和几美元。此外,无论如何,他们都需要这样做,才能拥有一个营销相关应用程序的网站。如果他们负担不起,他们就负担不起在 Play 商店上架应用程序的 25 美元或其他市场的类似费用。而且,如果他们正在为一家企业编写这个应用程序,那么该企业应该已经有一个网站。而且,归根结底,如果开发人员不介意用户在没有应用程序的地方点击电子邮件时收到 404,则 URL 不需要实际解析为 Internet 上的任何真实内容。

    因此,如果这是一个“表演终结者”,那么呼吸也是。

    我在做什么有可能吗?

    是的。

    如果是,该链接必须遵循什么结构/语法?

    http://www.this-so-does-not-exist.com/something 可以很好地启动this sample app,通过以下<intent-filter>

      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="www.this-so-does-not-exist.com" android:path="/something" />
      </intent-filter>
    

    您会注意到此 URL 会导致 404,这表明您实际上不需要花费任何钱来使此技术起作用。另请注意,此技术已在 StackOverflow 上的一些地方和其他地方的许多地方编写。

    但是,Gmail 似乎没有采用 intent: 方案,即使在 HTML 电子邮件中使用也是如此。

    【讨论】:

    • 感谢@CommonsWare。这很好用,虽然我对“intent:”链接语法更感兴趣。我尝试了一些语法,但最终得到的链接不是 linkified。无论如何,感谢您的回答,正如您所说,仅使用 http 方案而不是“intent:”更加一致。
    • 我发现在我的活动中使用以下属性也有助于获得我正在寻找的行为(在现有应用程序实例中打开活动):android:allowTaskReparenting="true" android:launchMode= “单一任务”
    • 太棒了!谢谢 - 非常适合我的解决方案。
    • @ArslanAhmad:这个示例应用程序在 Android 5.1 模拟器上处理 http://www.this-so-does-not-exist.com/something 没有任何问题。如果您在使用该技术时遇到问题,请提出一个新的 Stack Overflow 问题,您可以在其中发布代码和症状。
    • 非常感谢您的简短回答,
    猜你喜欢
    • 2023-03-14
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多