2011-11-10 10 views
1

私はSDカード/メディアカードでデータベースを作成したいです。私はデバイス(ブラックベリーカーブ8900)でアプリケーションを実行すると、私は1つのルートすなわち "システム/"とシミュレータ(9500)で実行中のアプリケーションを見つけると、私はコードのコメントに示されているように3つのルーツを見つける。私はエラーが発生しています。Blackberry:SDCard/Media Cardの場所をfileSystemRootとして取得できませんか?

_db = DatabaseFactory.openOrCreate(_uri); 
    (error: Method "toString" with signature "()Ljava/lang/String;" is not applicable on this object) 

私はこのエラーについて何か理解できません。 ここにコードがあります。

public void getValues() throws Exception 
{ 

    boolean sdCardPresent = false; 
    String root = null; 
    Enumeration e = FileSystemRegistry.listRoots(); 
    while (e.hasMoreElements()) 
    { 
     root = (String)e.nextElement(); 
     System.out.println("Value of root::" +root); // value of root = "system/" when run in device and 
                // value of root = "store/" "SDCard/" "system/" when run in simulator 
     if(root.equalsIgnoreCase("system/")) 
     { 
      sdCardPresent = true; 
     }  
    }   
    System.out.println("--------------------getValues()----------------------------------"); 
    URI _uri = URI.create(Global.DB_PATH + Global.DB_Main); 
    System.out.println("Valud of uri::" +_uri); 
    _db = DatabaseFactory.openOrCreate(_uri); //getting error here. 
    System.out.println("Valud of _db::" +_db); 
    _db.close(); 

(シミュレータで実行した場合)私が「/ストア」で出力を得る、これらの3つの経路を試みたが、デバイスの「/ストア」を使用して、残り2 paths.Evenとの誤差は、同じエラーを示しています。

Global.DB_PATH = "/MediaCard/databases/"; 
Global.DB_PATH = "/SDCard/databases/"; 
Global.DB_PATH = "/store/databases/"; 

私はそこにデータベースをコピーできるようにSDカード/メディアカードをrootとして入手する方法はありますか?

答えて

3

実際のデバイスでアプリを実行しているときに、USBケーブルをデバイスに接続していると思います。このような場合は、ケーブルを外してアプリを再実行してみてください。あなたはDialog.inform()を使って、今度はどんなルーツをすぐに確認することができます。

+0

はい、あなたの推測は正しいです、あなたの助言に従って私はケーブルを抜いて、SDカードの位置を得ました。私は今SDCardでデータベースを作成することができます。本当にありがとうございます。 –

+0

これはうまくいきましたが、デバッグできませんでした。( –

+0

これはBlackBerryだけです:ログエントリをファイルに書き込むいくつかのロガーを作成することを検討してください。後で調査のためにデバイスからPCにプルダウンすることができます –

-1
private ObjectListField getFileList() { 
    if (fileList == null) { 
     fileList = new ObjectListField(); 
     String[] roots = new String[3]; 
     Enumeration enum = FileSystemRegistry.listRoots(); 
     int x = 0; 
     while (enum.hasMoreElements()) { 
      if (x < 3) { 
       roots[x] = enum.nextElement().toString(); 
      } 
      x++; 
     } 
     enum = FileSystemRegistry.listRoots(); 
     fileList.set((roots[2] != null) ? roots : new String[]{"system/", "SDCard/", "store/"}); 
    } 
    return fileList; 
} 

このコードを試してください。

+0

私の質問は、私がfilerootsを取得していない、すなわち、コードで示されているようにSDCard /またはMedia Cardをrootに取得していないということです。私がデバイスiでアプリケーションを実行しているときには、ただ1つのルートしか見つけられません。システム/ sdcardが挿入されていても。 (enum.hasMoreElements()はroot = system /を1回だけループします)。 –

関連する問題