1

我正在开发一个 PhoneGap 项目,并且我正在尝试实现一个简单的机制来在将 URL 传递给应用程序时调用该handleOpenURL方法(根据此示例:http://goo.gl/FKmFL )。可悲的是,我遇到了一些绊脚石。问题有两个方面:

首先,我的调用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>

您能提供的任何帮助将不胜感激!

4

2 回答 2

1

我在带有 DroidGap 的 Android 上遇到了这个问题......

第一次启动应用程序时,意图数据对 DroidGap 子类方法可见,但是无法将数据导入 Javascript 执行环境以使其可用。

我尝试了一个 sendJavascript 调用(如上所示),但我怀疑这会失败,因为页面尚未完成加载并且 onDeviceReady 尚未触发。

我也尝试在 CookieManager 中设置一个 cookie,但无法让它发挥作用。

将数据附加到查询字符串,即 super.loadURL("file://..." + "#" + url)

然后在 onDeviceReady 事件处理程序中解析 location.href 效果最好。它在第一次启动应用程序时不起作用,但是在应用程序关闭+杀死然后启动之后它会起作用。

它太糟糕了 InvokeString 在 Android 上不起作用并且已被弃用。

于 2013-05-23T18:00:39.700 回答
-1

首先,一个小问题,您对 'intent.getDataString() != ""' 的检查将不可靠。它需要是 '!intent.getDataString().equals("")'。

我没有看到对“setJavaScriptEnabled(true)”的调用,这似乎是让它工作的最低要求。

您可能会尝试为此类事情找到一个工作教程,然后开始包含与您的应用程序相关的元素。

于 2012-10-25T15:22:45.873 回答