我正在开发一个PhoneGap项目,我正在尝试实现一个简单的机制来调用handleOpenURL
方法(根据此示例:http://goo.gl/FKmFL),当URL传递给应用程序时。可悲的是,我遇到了一些绊脚石。问题有两个:
首先我对sendJavascript
的调用似乎根本不起作用 - 没有调用JavaScript,没有错误,没有任何错误。我已经读过这个函数在活动开始时没有用,但似乎没有其他人遇到麻烦...
其次当我拨打loadUrl
时(请参阅下面的示例),我收到如下错误消息:
ReferenceError: Can't find variable: handleOpenURL at undefined:1
以下是我的Java代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
final Intent intent = getIntent();
Log.d("myApp","Start");
Log.d("myApp","Data string: " + intent.getDataString());
if(intent.getDataString() != "" && intent.getDataString() != null) {
Log.d("myApp","Calling handleOpenURL");
String url = intent.getDataString();
// this.sendJavascript("handleOpenURL(\"" + url +"\");");
super.loadUrl("javascript:handleOpenURL('"+url+"')");
}
}
以下是我的JavaScript代码:
<script>
function handleOpenURL(url) {
$("body").append("<h2>Url:</h2>");
$("body").append("<p>"+url+"</p>");
}
</script>
非常感谢您提供的任何帮助!
答案 0 :(得分:1)
我在Android w / DroidGap上确实存在这个问题...
第一次启动应用程序时,DroidGap子类方法可以看到intent数据,但是无法将数据放入Javascript执行环境中以使其可用。
我尝试了一个sendJavascript调用(如上所示),但我怀疑这个失败是因为页面还没有完成加载而onDeviceReady还没有被激活。
我也尝试在CookieManager中设置一个cookie,但是无法让它工作。
将数据附加到查询字符串,即 super.loadURL(“file:// ...”+“#”+ url)
然后在onDeviceReady事件处理程序中解析location.href是最好的。它在第一次启动应用程序时不起作用,但是在应用程序关闭+杀死然后启动之后它会起作用。
太糟糕的InvokeString在Android上不起作用,并且已被弃用。
答案 1 :(得分:-1)
首先,一个小问题,你对'intent.getDataString()!=“”'的检查是不可靠的。它需要是'!intent.getDataString()。equals(“”)'。
我没有看到对“setJavaScriptEnabled(true)”的调用,这似乎是让它工作的最低要求。
您可以尝试为这类事情找到工作教程,然后开始包含与您的应用程序相关的元素。