使用 Worklight JavaScript 更新 WebSphere Portal 主题
将 WebSphere
Portal 与 Worklight 集成的第一步是在 Android 应用程序中显示该门户。为此,需要创建一个混合应用程序,以便连接到原生包装器中的 WebSphere Portal。在 Eclipse 中,打开初始化应用程序的 Java 类(清单 2),该类位于 \WLPortal\apps\WLPortalApp\android\native\src\com\WLPortalApp\WLPortalApp.java。
清单 2. WLPortalApp.java
package com.WLPortalApp;import android.os.Bundle;import com.worklight.androidgap.WLDroidGap;public class WLPortalApp extends WLDroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //DeviceAuthManager.getInstance().setProvisioningDelegate( <Use default ProvisioningDelegateImpl class or replace with your IProvisioningDelegate implementation>); super.loadUrl(getWebMainFilePath()); } } 该应用程序使用清单 2 中所示的类将控制权转移到位于 \WLPortal\apps\WLPortalApp\common\WLPortalApp.html 的 HTML 页面。您需要更改此文件,以便它能前进到 WebSphere Portal IP 地址和端口。为此,可以更改 onCreate 方法来加载 WebSphere Portal URL 并利用 cookie 管理器(清单 3)。
清单 3. 利用 WebSphere Portal URL 的 onCreate 方法
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
CookieSyncManager.createInstance(appView.getContext()); CookieManager.getInstance().removeSessionCookie(); super.loadUrl("http://9.99.999.999:10039/wps/portal",false); } 确保添加了 CookieSyncManager 和 CookieManager 的导入依赖关系,如清单 4 所示。
清单 4. CookieSyncManager 和 CookieManager 依赖关系
import android.webkit.CookieSyncManager;import android.webkit.CookieManager; 由于进行了重定向,
所以您需要定义另一个方法,让
经过验证的页面正常工作,如清单 5 所示。这些更
新的结果如清单 6 所示。
清单 5. 添加这个 loadUrl 方法
public void loadUrl(String url) { loadUrl(url,false); }
清单 6. WLPortalApp.java 的最终内容
package com.WLPortalApp;import android.os.Bundle;import android.webkit.CookieSyncManager;import android.webkit.CookieManager;import com.worklight.androidgap.WLDroidGap;public class WLPortalApp extends WLDroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CookieSyncManager.createInstance(appView.getContext()); CookieManager.getInstance().removeSessionCookie(); super.loadUrl("http://9.99.999.999:10039/wps/portal",false); } public void loadUrl(String url) { loadUrl(url,false); }} 要确保所有链接都使用混合容器 Web 视图打开,可在 cordova.xml(位于 \WLPortal\apps\WLPortalApp\android\native\res\xml\cordova.xml)中将 stay-in-webview
首选项设置为:
<preference name="stay-in-webview" value="true" />
如果使用一个非本地门户服务器,那么也可修改此位置的安全策略。默认的安全策略是阻止所有网络访问。然后您可以声明对 cordova.xml 中特定网络域和子域的访问权限。这篇文章 提供了有关的更多信息。