1

我正在开发一个应用程序,我使用浏览器字段在其中加载 html 文件。我的代码如下。

主.java

    //pushing screen to browser field page..

public Main()
{        
    // Push a screen onto the UI stack for rendering.
    pushScreen(new WebViewController());
}  

WebViewController.java

    BrowserFieldConfig bfConfig = new BrowserFieldConfig();
    bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,
            BrowserFieldConfig.NAVIGATION_MODE_POINTER);
    bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED,
            Boolean.TRUE);
    bfConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);  
    bfConfig.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(0.0));
    bwf = new BrowserField(bfConfig);
    add(bwf);

    UiApplication.getUiApplication().invokeLater(new Runnable() {

        public void run() {
            // TODO Auto-generated method stub
            bwf.requestContent("local:///html/index.html");         
        }
    }, 500, false);    

我所有的服务器代码和 UI 设计都分别在从 index.html 页面调用的 javascript 和 html 页面中......

根据以下代码,它在模拟器中工作(执行)并在运行时从服务器获取数据。但是当我在 BlackBerry 设备上运行时,只有 UI 设计从 index.html 页面加载,但没有从服务器获取数据。我不知道错误是什么。我也在黑莓设备中启用了javascript,但它仍然无法正常工作..

由于我是这个黑莓开发的新手,在黑莓设备中运行时无法找到我的应用程序有什么问题。

根据以下代码,我是否必须添加任何外部代码才能从服务器获取数据(就像签名后在黑莓设备中访问互联网一样)

在模拟器中,它运行良好并从服务器获取数据。在黑莓设备中执行时,只有主页 UI(index.html 中的 UI)正在加载,但不从服务器获取数据。

谁能帮我这个.....

4

1 回答 1

5

这个问题是“为什么我在黑莓上的连接有问题”问题的变体。我会试着告诉你如何解决它们。

与 j2me、android 或 iphone 连接不同,网络连接要复杂得多,您通常要求系统打开 TCP/HTTP/UDP 连接。RIM 引入了网络传输。我不确定原因——或者他们想让开发人员有权选择特定的传输方式,或者因为 BES 管理员/运营商可能会限制某些连接,或者其他原因。但副作用是 BB 开发人员必须指定他想为设备上的当前连接使用哪种传输。默认连接的戏剧性事情是直接 TCP(通过 APN 运营商设置)。直接 TCP 在模拟器上运行完美。但 BB 设备上最常用的连接是 BIS-B 和 WiFi。此外,BIS-B 以前对普通开发人员不可用,他们最近才向所有人开放。

在 5.0 之前,OS 开发人员有大量代码来确定设备上可用的传输,并且传输尝试按顺序打开循环。RIMConnectionFactory在 5.0 OS 中引入,它提供标准机制来打开确定可用传输并打开连接(示例)。

您始终必须使用ConnectionFactory要打开连接的位置。Connector如果您直接通过或通过到达远程主机并不重要BrowserField。你必须使用ConnectionFactory.

戏剧性的是,即使您使用它也无法到达 BIS-B 传输。正如我之前提到的,它仅适用于联盟成员。RIM 目前不限制任何开发人员使用 BIS-B。但我没有看到他们也举了任何例子。要允许 ConnectionFactory 打开 BIS-B,您需要下一行

connFact.setTransportTypeOptions(TransportInfo.TRANSPORT_BIS_B,
        new BisBOptions("mds-public"));

这只是黑莓上连接的一小部分摘要。但它应该为您提供解决问题的正确方向。

于 2012-08-02T06:35:11.307 回答