2011-08-19 5 views
9

私は各書籍をSqliteDatabaseとして保存するライブラリアプリケーションを持っています。私はすべての本のdbsをsdcardに保存します。私の質問は、ユーザーが私のアプリをアンインストールした後、このアプリに関連するすべてのDBが削除されるかどうかです。いいえ、どうすればいいですか?アンドロイドアプリをアンインストールすると、sdcardに保存されているデータベースが削除されますか?

ありがとうございました。

答えて

9

一般実際にはありません。アンインストールすると、APK自体(/data/app/com.example.app-1.apk)と/data/data/com.example.app内のデータ(sharedprefs/db/etc)は削除されますが、Android > = 2.2は、sdcardから何かを削除し、特定のディレクトリ(通常は/sdcard/Android/data/com.example.app)だけを削除します。

しかし、Froyoの以前のバージョンでは、delete when updatingというアプリもあり、永続的なストレージとしてはかなり危険です。

+0

このような予測不可能な動作を避けるには、どうすればこれらのファイルを保存する必要がありますか?内部ストレージに格納されているとすぐにいっぱいになり、SqliteFullExceptionが返されます。そのような多数のファイルを格納するための最良の選択肢は何ですか? – techno

+0

私は/sdcard/data/com.example.appを使用します。これは、アンインストールまたは更新時に決して削除されないという点で一貫しています。そしてそれはルートレベルではないので、ユーザーは後ろに残す混乱を嫌うことはありません。 "/ sdcard"をハードコードする代わりに、Environment.getExternalStorageDirectory()を使用して/ data /とパッケージ名を追加します。 –

+0

したがって、/sdcard/data/com.example.appを使用すると、すべてのdbsがアンインストール時に削除されます。また、ユーザーはこれらのファイルにアクセスできますか? – techno

2

です。外部ストレージ(SDカード)の任意の場所にファイルを置くと、アプリをアンインストールした後もファイルは削除されません。ファイルを保存するディレクトリを取得するためにgetExternalFilesDir()(Android 2.2以降)を使用した場合、それらのファイルは、アプリケーションのアンインストール時に削除されます。 Froyoの初期のバージョンでは、アプリのアップグレード時にもファイルを削除するバグがあるようですので、注意してください。