プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

Android のストレージ関係のパーミッションについて

Android の外部ストレージ関係のパーミッションの扱いって、API レベルでいろいろと変わってわかりにくいので、まとめてみました。何かのご参考にしてください。

ただ、いろいろとドキュメントを読んではみたものの、理解不足から間違っている可能性もあります。その点を踏まえてご覧になる際は自己責任でお願いします。ということで、最終的にはご自分で公式ドキュメントを確認することをお勧めします。

なお、下記表で

です(ともに dangerous パーミッションです)。

外部ストレージの READ, WRITE を行う際に必要となる権限について

ターゲット manifest 宣言, READ manifest 宣言, WRITE Runtime Permission 処理 備考
API 3
( Android 1.5 ) 以前
- - - 常に許可される
API 4
( Android 1.6 ) ~
- 必要 - WRITE 導入
API 19
( Android 4.4, Kitkat) ~
必要、一部不要 ※1 同左 - READ が必要になる
API 23
( Android 6 ) ~
同上 同上 必要 Runtime Permission が導入
API 29
( Android 10, Q ) ~
必要、一部不要 ※2 同左 たぶん必要 対象範囲別ストレージ導入

※1 一部不要:特定の領域へのアクセスは宣言不要です(『アプリ固有のディレクトリ』と呼ばれており、具体的には getExternalFilesDir(), getExternalCacheDir() で取得されるディレクトリになります)

※2 一部不要:対象範囲別ストレージになり、アプリ固有のディレクトリには、そのアプリ以外のアプリはアクセスできなくなります

対象範囲別ストレージはまだ試してないので、ちょっと自信ありませんが、たぶんこんな感じになると思います。

ご参考までに。