1

私のスクリプトは、httpConnection を介して xml を取得し、永続ストアに保存します。問題ありません。次に、保存されたデータをループして、キュー経由で取得する画像 URL のリストを作成します。

これらの各リクエストは、httpConnection スレッドを呼び出します。

...

public synchronized void run()
 { 
         HttpConnection connection = (HttpConnection)Connector.open("http://www.somedomain.com/image1.jpg");
         connection.setRequestMethod("GET");
         String contentType = connection.getHeaderField("Content-type");

         InputStream responseData = connection.openInputStream();
         connection.close();

         outputFinal(responseData, contentType);
}

public synchronized void outputFinal(InputStream result, String contentType) throws SAXException, ParserConfigurationException, IOException
 {

  if(contentType.startsWith("text/"))
  {
       // bunch of xml save code that works fine

  }
  else if(contentType.equals("image/png") || contentType.equals("image/jpeg") || contentType.equals("image/gif"))
  {
   // how to save images here?
  }
  else
  {
   //default
  }
 }

適切なドキュメントが見つからないのは、応答データを取得してデバイスに保存されている画像に保存する方法です。

たぶん、私は非常に明白な何かを見落としていました。どんな助けでも大歓迎です。ありがとう


このアドバイスに従ってみましたが、BB 固有の問題を検索するときにいつも見つけたものと同じものを見つけました。

問題は、すべての例または投稿が、プラットフォームに関するすべてを知っていることを前提としていることです。ここで簡単な質問があります: コードのどの行が読み取り出力ストリームを blackberry デバイスに書き込みますか? どのパス?後で取得するにはどうすればよいですか?

私はこのコードを持っていますが、それがどこに書いているのか、それが何をしているのかさえわからないので、それが何かをするかどうかはわかりません:

** ファイル名は、呼び出された URL に基づいてループで決定されます。

FileOutputStream fos = null;
try
{
    fos = new FileOutputStream( File.FILESYSTEM_PATRIOT, filename );

    byte [] buffer = new byte [262144];
    int byteRead;
    while ((byteRead = result.read (buffer ))!=- 1)
    {
        fos.write (buffer, 0, byteRead);
    }

    fos.flush();
    fos.close();   
}
catch(IOException ieo)
{ 
}
finally
{
    if(fos != null)
    {
        fos.close();
    }
}

アイデアは、サーバーから約 600 枚の画像を取得することです。xml をループして各画像をデバイスに保存し、エンティティが呼び出されたときに関連する画像 (entity_id.png) を内部ストレージから取得できるようにする必要があります。

RIM のドキュメントはこれを指定しておらず、簡単に理解できるようにもしていません。この問題は、このフォーラムや私が検索した他のフォーラムでは解決されていないようです。

ありがとう

4

1 に答える 1

2

書き込みを行うには、Java FileOutputStream を使用する必要があります。また、InputStream からデータを読み取った後、接続を閉じる必要があります (閉じる呼び出しの上に outputFinal を移動します)。FileOutputStream に関するあらゆる種類の例を簡単に見つけることができます。

詳しくはこちらをご覧ください。FileOutputStream を使用するには、アプリケーションが署名されている必要があることに注意してください。

于 2010-04-23T21:24:06.523 に答える