[android]apkにデータベースファイルを含める
![]()
2009/11/16
- TAG
- android
アプリ作成の際、リソースとしてデータベースを含めたいことがあり、アプリの初期化でやってもいいんですが件数が多くなると初回起動が遅くなるしバージョンアップ対応がめんどくさくなりそうだし、というわけでSQLite形式のdbファイル自体をapkに含めてしまう方法です。
主な流れは、
1.初回にassetフォルダからアプリのdatabasesフォルダに移動
2.通常通りDBにアクセス
流れと言おうとしたら2つで終わりました。調べてる時は面倒だったのにわかってしまえばこれだけですね。
以下コード。
public void copyFile(String srcFilePath) {
File dstFile;
String dst;
dst= "/data/data/" + this.getPackageName() + "/databases/";
dstFile=new File(dst);
dstFile.mkdirs();
dst+=srcFilePath;
dstFile = new File(dst);
InputStream input = null;
AssetManager as = getResources().getAssets();
OutputStream output = null;
try {
input = as.open(srcFilePath);
output = new FileOutputStream(dstFile);
int DEFAULT_BUFFER_SIZE = 1024 * 4;
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
input.close();
output.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
(参考:AndroidのFile入出力サンプル:throw Life様)
copyFile(DBファイル名)という形でassetフォルダのファイル名を指定し、アプリのdatabasesフォルダに移動します。
このフォルダに移動した以降は通常のSQLiteOpenHelperをextendしたクラス等から扱えますので、大量の初期データがある場合などにお使いください。
トラックバック (0)
トラックバックURL: http://kiteretsu.kayac.com/cgi-bin/mt-tb.cgi/50
- android
- GravSynth
- IdeaPod
- tips
- UI
- activity
- air
- AIR本 Hello Air World
- andtroid
- Apple Store
- arduino
- AudioRecord
- bluetooth
- Funnel
- Gainer
- intent
- iphone
- ipod touch
- LED
- Lydian Chromatic Concept
- mapview
- mediarecorder
- Pen
- permission
- private trainer
- recoroid
- SD
- TelephonyManager
- TimePickerDialog
- YUREX
- アプリ
- ウェブで一発当てる方法
- ハッカソン
- マイク
- リリース
- ロクナナ
- ワークショップ
- 音楽
- 楽器
- 自己紹介
- 自己紹介
- 書籍
- 青山ブックセンター
- 閃考会議室
- 店舗
- 明和電機
- 録音


![_level0 [Flash Developers Blog]](/img/bnr_level0.gif)


コメントを投稿する