发送带有链接(HTML)的电子邮件,以在移动电话上打开特定应用程序

时间:2015-08-04 15:56:46

标签: android html

背景

我打算在我的应用程序中实现密码重置功能。经过一些研究,我已经评估了这种方法以满足我的需求:

  1. 用户输入“重置密码”活动,输入预先注册的电子邮件以发送重置链接。
  2. 系统有一个表password_change_requests,其中包含IDTimeUserID列。当用户按下“发送”按钮以重置密码时,在表中创建记录。 Time列包含用户按下“忘记密码”按钮的时间。 ID是一个字符串。创建一个长随机字符串,然后像密码一样进行哈希处理。然后将此哈希用作表中的“ID”。
  3. 系统向用户发送一封电子邮件,其中包含一个链接。该链接还包含原始ID字符串(在散列之前)。
  4. 当用户点击电子邮件中的链接时,他将被移至相关应用程序。该应用程序从URL检索ID,再次对其进行哈希处理,并检查该表。如果有这样的记录并且不超过24小时,则会向用户显示输入新密码的提示。
  5. 用户输入新密码,点击确定。
  6. 这种方法的灵感来自于Vilx-对this question的回答。

    困难

    乍一看,上面介绍的方法似乎很容易实现。但我遇到了一些令人头疼的问题。步骤(1)和(2)易于实现。当我仔细观察步骤(3)和(4)时,我最初的想法是通过电子邮件发送某种Intent,因为这是启动应用程序的常用方法。但由于意图的“来源”充其量只是HTML代码,我不太确定这是否有效。

    问题

    1. 如何从用户收件箱中的电子邮件(比如HTML锚标签)启动我的特定Android应用程序?
    2. 如何通过电子邮件将数据(ID字符串)传递给我的应用程序?
    3. 如果这是不可能的,有没有其他方法可以解决上述方法?

1 个答案:

答案 0 :(得分:3)

  

如何从用户收件箱中的电子邮件(比如HTML锚标签)启动我的特定Android应用程序?

无法保证这样做。电子邮件应用程序没有义务向您嗤之以鼻。

我们欢迎您在自己的应用中开展一项活动,其<intent-filter>广告您希望回复某些网址或网址前缀,例如http://marcussystem.com/hey/lets/run/the/app。理论上,当用户点击指向匹配网址的电子邮件中的链接时,您的应用程序将包含在选择器中(以及Web浏览器)供用户选择。

或者,欢迎您使用打开您的某项活动的intent计划制作网址。电子邮件客户端可能无法将其识别为有效的URL,但它会绕过选择器。

但是,同样,没有要求任何电子邮件客户端支持您想要的内容。对于碰巧在移动Web浏览器中查看其电子邮件的用户而言,这是双倍的。

  

如何通过电子邮件将数据(ID字符串)传递给我的应用程序?

http网址的情况下,让它成为网址本身的一部分,最好是路径:http://marcussystem.com/hey/lets/run/the/app/and/here/is/the/ID/...,其中...是您的ID(假设它是纯粹的网址路径)友好的人物)。