メッセージング アプリからのログ情報を保持する SQLite データベースを試しています。
私はSQLiteOpenHelperを使用しており、以下を使用してルート化されていないデバイスのSDカードにdbを強制しています:
public LogDatabase(Context context, String dbname) {
super(context,
Environment.getExternalStorageDirectory().getAbsolutePath() +
"/" + dbname, null, 3);
}
これは正常に機能しているように見えます。データベースは適切に拡張され、アプリは書き込み時に例外をスローしません。
デバイスを USB マウントし、外部アプリ (たとえば、Ubuntu コマンド ラインからの sqlite3) からデータベースを開こうとすると、問題が発生します。エラーは常に同じです:「エラー: ファイルが暗号化されているか、データベースではありません」。
Android での SQLite の扱いについて何か気になる点はありますか? または、データベースの管理方法について根本的に壊れているものを見逃していますか?
編集: 問題の元のデバイスは、v2.3.5 を実行している HTC Desire S です。
編集: 別のデバイス (v2.3.4 を実行している Motorola ET1) でテストを再実行しましたが、問題は発生しません。Ubuntu 経由でデバイスをマウントし、sqlite3 コマンド ライン経由で自由にデータベースを参照できます。