2012-03-20 8 views
0

アンドロイドアプリを作った。私はそれでデータベースを使用しています。 .apkファイルを自分の電話機にインストールしても問題ありません。しかし、私がエミュレーターを使用している間にデータベースに入力したデータは表示されません。私は以前に充填されたデータベーステーブルを使用する必要があります。私のデータベースは実行時に作成されません。私の電話機でデータベースを取得して、データベースと完全に正常に動作しているアプリを確認するにはどうすればよいですか?アンドロイド携帯のアプリであらかじめ構築されたデータベースを使用する

答えて

1

あなたは、アプリの初回起動時に、assetsまたはres/rawディレクトリの下にデータベースファイルを保存/data/data/com.company.yourapp/databases/にそのデータベース・ファイルをコピーして、いつものように、データベースを開くことができます。

assetsres/rawディレクトリに保存するファイルの違いは、assetsのファイルは圧縮されていますが、res/rawのファイルは圧縮されています。 res/rawのファイルはAndroid 2.3より前に1 MBを超えることはできません。だから私は自分でデータベースファイルを圧縮してassetsに保存し、コードではGZIPInputStreamを使用してファイルを解凍することをお勧めします。

+0

私はどのようにデータベースファイルをコピーできますかに関するガイドはありますか? –

0

あなたのデータベースをテストする側が必要な場合は、あなたのsdcardにエクスポートする必要があると思います。

public static void exportfile(String applicationPackageName,String databaseName,String pathOfFolder) throws FileNotFoundException, IOException 
    { 
       InputStream myInput; 

       myInput = new FileInputStream("/data/data/"+applicationPackageName+"/databases/"+databaseName); 

       File directory = new File("/sdcard"+pathOfFolder); 

       if (!directory.exists()) 
       { 
        directory.mkdirs(); 
       } 

       OutputStream myOutput = new FileOutputStream(directory.getPath()+"/"+databaseName); 

       byte[] buffer = new byte[1024]; 
       int length; 
       while ((length = myInput.read(buffer))>0) 
       { 
        myOutput.write(buffer, 0, length); 
       } 

       myOutput.flush(); 
       myOutput.close(); 
       myInput.close(); 

    } 

applicationPackageName: - アプリケーションのパッケージ名

databaseNameの: - データベースファイル名

pathOfFolder: - 追加することを忘れないでくださいSDカードに

を、ファイルをエクスポートするフォルダのパスマニフェストファイルの<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

そして、SQLite Managerをダウンロードしてそのファイルを開きます。

ありがとうございます。あなたのお役に立てば幸いです。

+0

この回答が役に立ったら、それを受け入れることを忘れないでください。 –

関連する問題