1

ブラウザーフィールドを使用してhtmlファイルをロードするアプリを開発しています。私のコードは次のとおりです。

Main.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 ページから読み込まれますが、サーバーからデータが取得されません。エラーの内容がわかりません。Blackberry デバイスでも JavaScript を有効にしましたが、まだ機能していません。

私はこのブラックベリーの開発に慣れていないので、Blackberry デバイスでの実行中にアプリの問題を見つけることができません。

次のコードに従って、サーバーからデータを取得するために外部コードを追加する必要があります(署名後にBlackberryデバイスでインターネットにアクセスするだけのように)

シミュレーターでは正常に機能しており、サーバーからデータを取得しています。Blackberry デバイスで実行すると、メイン ページ UI (index.html の UI) のみが読み込まれますが、サーバーからデータが取得されません。

誰でもこれで私を助けることができます.....

4

1 に答える 1

5

この質問は、「BlackBerry の接続に問題があるのはなぜですか」という質問のバリエーションです。それらを解決する方法を考えてみます。

ネットワーク接続は、システムに TCP/HTTP/UDP 接続を開くように要求する j2me、android、または iphone 接続とは異なり、非常に複雑です。RIM はネットワーク トランスポートを導入しました。理由についてはよくわかりません-または、開発者に特定のトランスポートを選択する権限を与えたい、またはBES管理者/キャリアが一部の接続を制限できるため、またはその他の理由があります. ただし、BB 開発者がデバイス上の現在の接続に使用するトランスポートを指定する必要があるという副作用があります。デフォルトの接続がダイレクト TCP であるという劇的なこと (APN キャリア設定による)。また、ダイレクト TCP はシミュレーターで完璧に機能します。しかし、BB デバイスで最もよく使用される接続は BIS-B と WiFi です。また、BIS-B は以前は通常の開発者には利用できませんでしたが、最近、すべての開発者に公開されました。

5.0 より前の OS 開発者は、デバイスで使用可能なトランスポートを決定するために膨大な量のコードを持っていたため、トランスポートが順番に開こうとするループが発生していました。5.0 OS で導入された RIM はConnectionFactory、使用可能なトランスポートを決定し、接続を開くための標準メカニズムを提供します ()。

ConnectionFactory接続を開きたい場所を常に使用する必要があります。Connectorリモートホストに直接到達するか、 経由で到達するかは問題ではありませんBrowserField。を使用する必要がありますConnectionFactory

劇的なことは、それを使ってもBIS-Bトランスポートに到達できないことです。前述したように、同盟メンバーのみが利用できました。RIM は現在、どの開発者に対しても BIS-B の使用を制限していません。しかし、彼らも例を挙げているとは思いません。ConnectionFactory が BIS-B を開くことができるようにするには、次の行が必要です。

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

これは、BlackBerry での接続の簡単な要約です。しかし、それはあなたの問題を解決するための正しい方向性を与えるはずです.

于 2012-08-02T06:35:11.307 に答える