我可以通过电子邮件中的链接将变量传递给Android应用吗?

时间:2013-08-12 06:58:26

标签: android cordova

我有一个用户注册的服务,部分注册过程需要确认电子邮件。用户可以通过三种方式注册该服务。在网络上,使用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应用程序使用Adobe Phonegap Build,因此它使用Javascript和HTML构建。结果,我不知道“意图过滤器”是什么。请在回答时考虑到这一点。谢谢你的理解。

2 个答案:

答案 0 :(得分:3)

我不知道如何使用Phonegap等工作,但使用纯Android,当您的应用打开时,Activity实际上将由{{1}启动,所以你可以使用Intent,你实际上会得到启动应用程序的网址。然后,您可以从那里提取查询参数。

答案 1 :(得分:3)

AndroidManifest.xml中,您需要添加以下XML作为Activity的孩子,这将添加意图过滤器(你不能)我需要知道更多的东西):

<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();
}