戌印-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
05

スポンサーサイト

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

外部領域へのアクセス権限と 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
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

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

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

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

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