2017-06-13 12 views
1

私はアンドロイドアプリを静的データベースにバンドルする必要があります。これは、アプリをインストール/更新するたびに置き換えなければなりません。私は最初の活動のたびにそれを置き換えることは望ましくありません。アセットにデータベースを配置することは実現可能ではないようです。 AndroidStudioを使用する方法はありますか?アンドロイドアプリ付きのSQLiteデータベースを束ねる

あなたがコーディングのビットでそれを行うことができます

答えて

1

import java.io.*; 
import android.content.Context; 
import android.content.res.AssetManager; 

... 

String dbName = /* db name */ 
Context context = /* read android context from somewhere */ 
File dbFile = context.getDatabasePath(dbName); 
// Test if DB file has been previously deployed. 
if(!dbFile.exists()) { 
    // Deploy the DB file. 
    AssetManager assets = context.getAssets(); 
    // Open an input stream on the source db file in assets. 
    // (Production code will need try/catch/finally around this block) 
    InputStream in = assets.open("dbname.sqlite"); 
    // Open an output stream on the target location. 
    OutputStream out = new FileOutputStream(dbFile); 
    // Copy the contents. (In actual code you would want to 
    // use a buffer). 
    int byte; 
    while((byte = in.read()) != -1) { 
     out.write(byte); 
    } 
    in.close(); 
    out.close(); 
} 
0

資産にデータベースを配置すると、それが実現可能な

確かではないようです。 Use SQLiteAssetHelper

+0

READMEはbuild.gardleに1行追加することを提案しています。プロジェクト用とモジュール用の2つのbuild.gardleファイルがあります。どちらを更新する必要がありますか?私が推測する限り、それはプロジェクトの1つでなければなりません。それが正しいか? –

+0

@VipulKumar: "どちらを更新するか" - ランタイムの依存関係は、 'SQLiteAssetHelper'ライブラリのように、モジュールの' build.gradle'ファイルにあります。 Gradleプラグインはプロジェクトの 'build.gradle'ファイルにあります。 – CommonsWare

関連する問題