2012-09-18 38 views
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/PhoneGap handleOpenUrl和Android

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

回答

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

在我将id条件更改为“onPageFinished”之后唯一有效的方法,这会在稍后触发。你也应该把这个url变量定义在条件之外,所以你不必调用intent.getDataString()3次。 – jackocnr

0

我遇到同样的问题,并希望分享恶化(据我可以告诉)的人解决谁可能不希望建立自己科尔多瓦...前行

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

添加此

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

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

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