戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

外部領域(SDカード)への保存とアンインストール

Androidのデータ保存で外部領域(SDカード)にデータを保存するときの注意事項。

ソフトウェア技術ドキュメントを勝手に翻訳
Android 開発ガイド - フレームワークトピック - 8. データ保存 外部保存域の使用

Android 2.2 (API 8) 以降、Context#getExternalFilesDir() が追加され、アプリに属する外部領域のディレクトリパスが取得できるようになりました。
このディレクトリに保存されたファイルは、アプリのアンインストール時にすべて削除されます。
※ Android 2.1 (API 7)以下は消えません。

アンインストール時に削除されるファイルは /mnt/sdcard/Android/data/[パッケージ名]/ 以下で、
Context#getExternalFilesDir() で取得されるディレクトリパスは /mnt/sdcard/Android/data/[パッケージ名]/files になります。
※ デバイスによって保存場所が変わりますが基本はこのパスになります。


ここで注意することは『SDカードのパス取得:Environment と System.getenv』で書いたように、SDカードが内部と外部の両方に搭載されているデバイスの場合です。
内部と外部に別れている場合、外部(ユーザーが挿し入れする方)のパスはメーカー依存になっています。

アンインストールで削除されるファイルは /mnt/sdcard/Android/data/[パッケージ名]/ 以下となるため、外部SDカードは対象外になります。
※ HTC J ISW13HTで /mnt/sdcard/ext_sd/Android/data/[パッケージ名]/files/ を作成して試しました。

アプリのアンインストール後にファイルが残らないよう、起動に必要なファイルは Context#getExternalFilesDir() に保存するようにしましょう。
ただし、ユーザーが作成したデータ(写真など)は消えないところがいいかもですね。ものによりますが。

---------------------------------------------------------------------------------
au Market で入手したゲームアプリをアンインストールしたときに
計 300M バイト以上もあるファイルが /mnt/sdcard/[メーカー名]/ に残っていたので記事にしてみました。

Android 2.1(API 7)以下に合わせたのかも知れないが削除されるようにしてほしかった…。
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。