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