使用PhoneGap我使用Manifest文件中指定的意图从电子邮件中的链接打开Android上的应用程序。这很好。
我现在需要做的是将一些数据解析到打开的应用程序,我从URL查询参数中检索的数据,这工作正常我正在读取在onCreate中的电子邮件中单击的URL (Bundle savedInstanceState)方法因此:
super.loadUrl("file:///android_asset/www/index.html");
System.out.println("- start intent -");
final Intent intent = getIntent();
if(intent != null && intent.getDataString() != null){
System.out.println("- data string:"+intent.getDataString());
String url = intent.getDataString();
this.sendJavascript("testMethod('"+url+"');");
System.out.println("- finished method call");
}
如果查看上面的代码,系统输出都按预期输出,数据字符串完全符合预期,但我的index.js文件中的testMethod(url)永远不会被调用。 即使我这样做了一个简单的方法
function testMethod(url){
alert("************************ alert");
console.log("******************** log")
console.warn("******************** warn")
console.info("******************** info")
console.error("******************** error")
}
没有进行任何控制台调用或警报。 所以对我来说似乎没有执行或调用sendJavascript方法。 我错过了什么吗?
答案 0 :(得分:0)
最后我根本无法使用它。我想要实现的是在从URL加载应用程序时传递值。如果有意图并将查询参数添加到loadUrl,我可以通过更改URL来实现此目的。然后在index.js中我检查了window.location.search,如果找到一个特定的查询参数,则调用一个额外的函数。
if(intent != null && intent.getDataString() != null){
super.loadUrl("file:///android_asset/www/index.html?register=true");
}
else{
super.loadUrl("file:///android_asset/www/index.html");
}
然后在Javascript中
if(window.location.search === "?register=true"){
handleOpenURL("my/url");
}