2
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");

    final String invokeString = getIntent().getDataString();
    if(invokeString != "" && invokeString != null) {
        this.sendJavascript("handleOpenURL('" + invokeString + "');");
        System.out.println(invokeString);
    }
}

我在这个网站上找到了这段代码:http: //blog.cttapp.com/p/phonegap-handleopenurl-for-android/

它不会执行handleOpenURL,我知道这一点,因为否则它会重定向页面。

4

2 回答 2

6

我有同样的问题。似乎 webview 还没有准备好。

这是我如何让它工作的:重写这个onMessage函数,因为到那时它似乎已经准备好听你的了:

@Override
public Object onMessage(String id, Object obj) {

    if (id.equals("onPageStarted")) {

        final Intent intent = getIntent();
        if(intent.getDataString()!= "" && intent.getDataString()!= null){
            String url = intent.getDataString();
            this.sendJavascript("handleOpenURL('" + url + "');");
        }

    }
    return super.onMessage(id, obj);
}

我在这里找到了这个解决方案。

于 2012-12-06T19:52:20.163 回答
0

我遇到了同样的问题,并想为可能不想自己构建 Cordova 的任何人分享一个更糟糕的(据我所知)解决方案......

就在行前

this.sendJavascript("handleOpenURL('" + url + "');");

添加这个

try{
    Thread.sleep(5000);
   } catch (Exception e) {
   // nothing
   }

我知道这不是最佳选择,但我真的没有时间扩展 Cordova 本身......

另外:由于上面(更好)答案中的链接缺少一些信息(解决方案线程中的一些论坛消息已被删除),这是您必须覆盖其 onMessage 的文件......祝你好运!

于 2013-05-31T19:52:04.217 回答