0

当我的 js 代码中触发某个事件时,我试图实现一个错误屏幕。由于错误页面是本地的,因此我尝试设置window.location.href = 'file:///android_assets/www/error.html'会引发错误,指示无法加载本地资源。

所以我试图在android中创建一个插件并执行以下操作:

    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 中添加公共 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的答案对我有用。

(注意:在这种情况下,我只有一项活动可以“获取”)

我正在使用科尔多瓦 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 回答