0

js コードで特定のイベントがトリガーされたときにエラー画面を実装しようとしています。エラーページはローカルであるため、設定しようとすると、window.location.href = 'file:///android_assets/www/error.html'ローカルリソースを読み込めないことを示すエラーがスローされます。

だから私はアンドロイドでプラグインを作成しようとしていて、次のことをしています:

    public PluginResult execute(final String action, final JSONArray data, final String callBackId) {
//      final DroidGap currentCtx = (DroidGap) ctx.getContext();

        final Context currentCtx = cordova.getActivity();
        MainActivity ma = (MainActivity) currentCtx;
        ma.loadUrl("file:///android_assets/www/error.html");

        PluginResult result = null;
        return result;
    }

問題は、このコードが URL をロードしないことです。これが正しい呼び出し方かどうかはわかりません。洞察をお願いします。

次のようなエラーが表示されます。 08-16 01:08:48.974: I/Web Console(730): JSCallback Error: Request failed. at file:///android_asset/www/cordova-2.0.0.js:3698

4

2 に答える 2

1

MainActivity に public loadUrl を追加するとうまくいきます

//MainActivity
public void loadUrl() {
    String url = "http://google.com";
    super.loadUrl(url, 30000);
}

....

//Plugin
public PluginResult execute(final String action, final JSONArray data, final String callBackId) {

    MainActivity ma = (MainActivity) context;
    ma.loadUrl();

    PluginResult result = null;
    return result;
}

私は PhoneGap 1.8.1 を使用していますが、この場合は問題ではないと思います。

于 2012-08-17T06:49:48.853 に答える
0

「cordova.getActivity()」を使用して「コンテキスト」を更新した後、 guyaの回答が役に立ちました。

(注: この場合、「取得」するアクティビティは 1 つだけです)

Cordova 2.1 を使用しています。

   public PluginResult execute(String action, JSONArray args, String callbackId) {
        if (action.equals(ACTION_GO_URL)) {
            MainActivity ma = (MainActivity) cordova.getActivity();
            ma.mainLoadUrl();
            return new PluginResult(Status.OK);
        } else {
            return new PluginResult(PluginResult.Status.INVALID_ACTION);
        }
    }

プラグインに MainActivity のインポートを追加することを忘れないでください。

import com.YOUR_NAMESPACE.MainActivity;

そして、パブリック メソッドを MainActivity に追加します。

public void mainLoadUrl() {
    String url = "http://www.google.com";
    super.loadUrl(url);
}
于 2012-10-02T22:16:58.547 に答える