PhoneGap handleOpenUrl和Android

时间:2012-09-18 19:10:32

标签: android cordova

@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,我知道这一点,因为它会重定向页面。

2 个答案:

答案 0 :(得分: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);
}

我找到了这个解决方案here

答案 1 :(得分:0)

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

就在行

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

添加此

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

我知道这不是最佳的,但我真的没有时间延长科尔多瓦本身......

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