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