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 に答える