@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,我知道这一点,因为它会重定向页面。
答案 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的文件。祝你好运!