如果phonegap的Web视图已完成加载,我需要从本机JAVA(非phonegap插件)类中进行检测。这是可能的,还是我需要依赖构造我的代码作为插件?
答案 0 :(得分:0)
我终于找到了一个解决方案(经过测试和工作)。 这是一个棘手的解决方法,但能完成这项工作。
第1步: 在与MainActivity相同的包中创建一个新类,如下所示:
public class MyClass{
private WebView appView;
public MyClass(DroidGap gap, WebView view){
appView = view;
}
public void onLoaded(){
// This will be called when webview loaded
System.out.println("WORKED!!");
}
}
第2步: 将以下行添加到MainActivity中的onCreate()的最后:
MyClass ai = new MyClass(this, super.appView);
super.appView.addJavascriptInterface(ai, "MyClass");
看起来应该是这样的:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
super.loadUrl("file:///android_asset/www/index.html");
MyClass ai = new MyClass(this, super.appView);
super.appView.addJavascriptInterface(ai, "MyClass");
}
第3步: 在assets / www的JavaScript代码中添加:
document.addEventListener("deviceready", function(){
try{
// Might throw an error but onLoaded() gets called correctly
window.MyClass.onLoaded();
}
catch(e){
console.error(e)
}
});
重要提示:确保您的index.html中正确包含cordova.js
这对我有用。