如果 phonegap 的 web 视图已完成加载,我需要从本机 JAVA(非 phonegap 插件)类中检测。这是可能的,还是我需要依赖将我的代码构建为插件?
问问题
343 次
1 回答
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)
}
});
重要提示:确保 cordova.js 正确包含在您的 index.html 中
这为我完成了工作。
于 2013-03-13T17:28:40.803 回答