4

我有用户注册的服务,注册过程的一部分需要电子邮件确认。用户可以通过三种方式注册该服务。在网络上、使用 iPhone 应用程序或使用 Android 设备。

当我向他们发送电子邮件以确认他们的注册时,我可以包含完成注册的链接,并且为了使用户更轻松地完成注册,我可以附上他们的用户名和验证码,然后将其自动放入表单中。

在 HTML 链接的情况下,它看起来像这样:

<a target="_blank" href="https://mysite.com/confirmation.html?verification=XXXXXXXXX&username=larry">Complete verification on the web</a>

我可以通过链接到 PHP 脚本来让应用程序在 iPhone 上打开:

<a target="_blank" href="https://mysite.com/iphoneopen.php?verification=XXXXXXXXX&username=larry">complete your verification with the iPhone app</a>

然后在 PHP 脚本中我有这个:

<meta http-equiv="refresh" content="0;URL=myappname://?verification=XXXXXXXXX&username=larry"/>

我在 Android 上使用什么代码,这样当用户在手机上收到电子邮件(可能是使用 GMail 应用程序)时,他们可以单击链接并直接进入应用程序?以及如何在该链接中包含变量?

我正在为我的 Android 应用程序使用 Adob​​e Phonegap Build,因此它是使用 Javascript 和 HTML 构建的。结果,我不知道什么是“意图过滤器”。请在回答时考虑到这一点。感谢你的理解。

4

2 回答 2

3

我不知道这些东西是如何工作的Phonegap,但是使用 pure Android,当您的应用程序打开时,您Activity实际上将由 an 启动Intent,因此您可以使用getIntent().getUri(),并且您实际上会获得启动该应用程序的 url。然后,您可以从那里提取查询参数。

于 2013-08-12T07:17:35.223 回答
3

在您的AndroidManifest.xml中,您需要添加以下内容XML作为您的子项Activity,这将添加一个Intent 过滤器(您不需要知道更多信息):

<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="https" android:host="mysite.com" />
</intent-filter>

然后,在您的主Java文件中,您可以在其中调用如下行:

super.loadUrl(“file:///android_asset/www/index.html”);

添加以下代码(在上面的行之后):

try {
    Uri uri = getIntent().getData();
    String data = uri.getSchemeSpecificPart();//this will set data to //mysite.com/iphoneopen.php?verification=XXXXXXXXX&username=larry
    if (data != null) {
        String[] vars = data.split("?");
        vars = vars[1].split("&");
        String verification = vars[0].split("=")[1];
        String username = vars[1].split("=")[1];
        //TODO: handle verification and username from here.
    }
} catch (Throwable t) {
    t.printStackTrace();
}
于 2013-08-21T19:04:49.577 回答