2

如果 phonegap 的 web 视图已完成加载,我需要从本机 JAVA(非 phonegap 插件)类中检测。这是可能的,还是我需要依赖将我的代码构建为插件?

4

1 回答 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 回答