检测Android本机JAVA代码中是否加载了phonegap

时间:2012-09-04 04:26:14

标签: android cordova

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

1 个答案:

答案 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

这对我有用。