2012-08-16 72 views
0

我想在我的js代碼中觸發某個事件時實現一個錯誤屏幕。由於錯誤頁面是本地的,我嘗試設置window.location.href = 'file:///android_assets/www/error.html'會引發錯誤,指示無法加載本地資源。執行函數phonegap插件loadUrl

所以我試圖創建的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

回答

1

它爲我,當我在MainActivity

//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; 
} 

我添加一個公共使用loadURL使用PhoneGap 1.8.1,但我認爲這不重要。

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); 
}