- Date: Sun 10 11 2013
- Category: Android
- Response: Comment 0 Trackback 0
外部領域へのアクセス権限と Android 4.4 KitKat
Android では外部領域(内部ストレージ/外部ストレージ)へアクセスするためには、アクセスを行うアプリ毎に WRITE_EXTERNAL_STORAGE または READ_EXTERNAL_STORAGE をパーミッションに設定する必要があります。
パーミッションを設定せずに外部領域にアクセスすると SecurityException が発生します。
Android 4.4 (KitKat / API 19) からはこの外部領域における、自身のアプリケーション領域 Context#getExternalFilesDir(String type) へはパーミッションなしでもアクセスできるようになりました。
ただし、このアクセス許可は自身のアプリケーション領域のみを対象としており、全てのアプリケーションが共有する領域 Environment#getExternalStoragePublicDirectory(String type) は対象外となります。
【アプリケーションの外部領域】
<外部領域>/Android/data/<package_name>/files/
例1)HTC J ISW13HT Android 4.0(非マルチユーザー)
/mnt/sdcard/Android/data/jp.inujirushi.android.sample/files/
例2)Nexus7 (2012) Android 4.3(マルチユーザー)
/storage/emulated/0/Android/data/jp.inujirushi.android.sample/files/
【外部領域へのアクセス権限(パーミッション)】
※外部領域へのアクセス権限は、外部領域にある全てのファイルが対象となります。
WRITE_EXTERNAL_STORAGE
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
アプリケーションが外部領域へアクセスし、ファイルへの書き込み、および、読み込みを行うことを許可します。
読み込みも許可されるため READ_EXTERNAL_STORAGE の指定は不要です。
READ_EXTERNAL_STORAGE
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
アプリケーションが外部領域へアクセスし、ファイルの読み込みを行うことを許可します。
このパーミッションは Android 4.1 (JellyBean API 16) で「予約された権限」として追加されており、開発者向けオプションのSDカード保護にチェックを入れない限り有効になりませんでした。
Android 4.4 で正式に対応された形になります。
■ 参考サイト
Taosoftware - Android:KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域
TechBooster - Android 4.4で追加されたパーミッションとDevice Features
Yukiの枝折 - Android:JBで追加されたREAD_EXTERNAL_STORAGE
パーミッションを設定せずに外部領域にアクセスすると SecurityException が発生します。
Android 4.4 (KitKat / API 19) からはこの外部領域における、自身のアプリケーション領域 Context#getExternalFilesDir(String type) へはパーミッションなしでもアクセスできるようになりました。
ただし、このアクセス許可は自身のアプリケーション領域のみを対象としており、全てのアプリケーションが共有する領域 Environment#getExternalStoragePublicDirectory(String type) は対象外となります。
【アプリケーションの外部領域】
<外部領域>/Android/data/<package_name>/files/
例1)HTC J ISW13HT Android 4.0(非マルチユーザー)
/mnt/sdcard/Android/data/jp.inujirushi.android.sample/files/
例2)Nexus7 (2012) Android 4.3(マルチユーザー)
/storage/emulated/0/Android/data/jp.inujirushi.android.sample/files/
【外部領域へのアクセス権限(パーミッション)】
※外部領域へのアクセス権限は、外部領域にある全てのファイルが対象となります。
WRITE_EXTERNAL_STORAGE
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
アプリケーションが外部領域へアクセスし、ファイルへの書き込み、および、読み込みを行うことを許可します。
読み込みも許可されるため READ_EXTERNAL_STORAGE の指定は不要です。
READ_EXTERNAL_STORAGE
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
アプリケーションが外部領域へアクセスし、ファイルの読み込みを行うことを許可します。
このパーミッションは Android 4.1 (JellyBean API 16) で「予約された権限」として追加されており、開発者向けオプションのSDカード保護にチェックを入れない限り有効になりませんでした。
Android 4.4 で正式に対応された形になります。
■ 参考サイト
Taosoftware - Android:KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域
TechBooster - Android 4.4で追加されたパーミッションとDevice Features
Yukiの枝折 - Android:JBで追加されたREAD_EXTERNAL_STORAGE
スポンサーサイト