来自执行功能的phonegap插件loadUrl

时间:2012-08-16 05:10:02

标签: android cordova phonegap-plugins

我正在尝试在我的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;
    }

问题是这段代码没有加载网址。我不确定这是否是正确的召唤方式。有什么见解吗?

我看到如下错误: 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

2 个答案:

答案 0 :(得分: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但在这种情况下我认为不重要。

答案 1 :(得分:0)

在使用“cordova.getActivity()”更新“上下文”后,guya的答案对我有用。

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

我正在使用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);
}