3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Androidアプリで使用するアプリ固有データまとめ

Posted at

目的

  • Android アプリで使用するアプリ固有データの種類・保存についてまとめる。

Androidアプリデータの保存方法による分類

  • Androidでアプリが保存するデータ(以下「アプリデータ」)の種類には以下がある。

    (1) アプリ固有のファイル
    アプリ独自のファイルで、他のアプリから共有しないファイル。アプリ独自フォーマットのファイル等。

    (2) 共有ファイル
    メディアやドキュメントなど、他のアプリと共有可能なファイル。一般的なフォーマットで他アプリから利用可能な画像・音声・動画ファイル等。

    (3) 設定データ
    アプリ固有の設定データ。他アプリからアクセスできない領域へキーと値のペアで保存する。

    (4) データベース
    構造化したデータを非公開のデータベースへ保存する。

  • アクセス手段・必要な許可・アプリのアンインストール時に削除されるかどうかはそれぞれ異なる。

  • 詳細は Android developers データ ストレージとファイル ストレージの概要 参照。

アプリ固有ファイルの保存場所

  • アプリ固有ファイルの保存場所は、内部・外部の2種類がある。

  • 内部・外部の別は保存場所や他アプリからアクセスできるかできないかの違いを示し、 デバイス内蔵で取り出せないメディアか・取り出せるメディア(SDカード)かの別を示すものではない 。GoogleのPixelシリーズ等、SDカードスロットが無いデバイスでも "外部ストレージ" は存在する。

  • 内部・外部ともにファイルを保存する専用の場所とキャッシュファイルを保存する別の場所がある。

    (1) 内部ストレージディレクトリ

  • 専用ディレクトリのパスは Context#getFilesDir() で取得する。実機のPixel5a(API30)では /data/user/0/(パッケージ名)/filesFile オブジェクトを返す。

  • API30 の環境では Android Studio の Device File Explorer でも上記フォルダはアクセス不可。(暗号化されて見えない?)

  • Android10(APIレベル29)以上では保存場所は暗号化される。

    (2) 外部ストレージディレクトリ

  • デフォルトの専用ディレクトリのパスは Context#getExternalFilesDir(String type) で取得する。

  • 保存するファイルが一般的なフォーマットで他アプリから利用可能な画像・音声・動画ファイル等の場合、上記 String type 引数でメディア種別毎のディレクトリへ保存することが推奨されている。使用可能な定数は Environment.DIRECTORY_PICTURES (画像)・ Environment.DIRECTORY_MUSIC (オーディオ)・ Environment.DIRECTORY_MOVIES (動画)等。他にも指定できるので Environmentクラス を参照。

  • 実機のPixel5a(5G)(API30)で、引数 String typeEnvironment.DIRECTORY_PICTURES を指定した場合の返値(Fileオブジェクト)は /storage/emulated/0/Android/data/(パッケージ名)/files/Pictures となる。

  • 保存するファイルが一般的なフォーマットでない場合、引数 String type には null を指定する。

  • 実機のPixel5a(5G)(API30)で、引数 String typenull を指定した場合の返値(Fileオブジェクト)は /storage/emulated/0/Android/data/(パッケージ名)/files となる。

  • 上記メソッドで取得可能な保存場所の権限は、Pixel5a(5G)では drwxrws--- 、AVD上のPixel3(API30)では /storage/emulated/0/Android/data までは見えるが、それ以下は Permission denied と表示され見えない。(Android Studio のDevice File Explorer で確認。)AVD上では他のアプリからアクセスできないかもしれない。

その他

  • 設定データ(Preference)については後で追記するかも。
  • データベースについては調べたら追加するかも。

参考

変更履歴

  • 2022/1/5 初版
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?