/sdcard に SQLite db をダウンロードして、Android アプリからアクセスできますか? 質問する

/sdcard に SQLite db をダウンロードして、Android アプリからアクセスできますか? 質問する

ファイルを .apk にバンドルして /sdcard に置く方法はないことはすでにわかっています。これまでのところ、最初の実行時に大きなファイルをダウンロードするのが最善の選択肢です。sqlite db を apk にバンドルしてコピーし、SQLiteDatabase でアクセスできるようにする方法を説明したチュートリアルを見つけました (これにより、必要なスペースが 2 倍になり、/sdcard はまったく使用されません)。

http://developer.android.com/guide/topics/data/data-storage.html#dbすべてのデータベースは /data/data/package_name/databases に存在する必要があると書かれています。

本当にそうなのでしょうか? フレームワークを騙して、/sdcard パーティションに配置されているデータベースを開く方法はありますか? 別の SQLite Java ラッパー/フレームワークを使用してそのようなデータベースにアクセスする方法はありますか?

上記の質問に対する答えが「いいえ」の場合、他にどのような選択肢がありますか? 私のデータはリレーショナル モデルで適切に表現されていますが、大きすぎます。また、アプリ全体を再インストール/アップグレードせずに更新できるようにしたいと考えています。

ベストアンサー1

もちろんできます。ドキュメントでは、制限は課されていないとも述べられているため、この点について少し矛盾しています。相対パスは上記の場所へのものであり、そこにあるデータベースはプライベートであると述べるべきだと思います。必要なコードは次のとおりです。

File dbfile = new File("/sdcard/mydb.sqlite" ); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
System.out.println("Its open? "  + db.isOpen());

おすすめ記事