Android 7.0 ファイル共有


Android 7.0 から アプリ間のファイル共有が制限されました。

プライリベート領域のファイルは、パーミッションが  700  になり、自分以外ののアプリからアクセス出来ません。

File Provider が新設され、 これを介してファイル共有を行います。

参考
Android 7.0 の動作の変更点

パーミッションの変更

アプリ間のファイルの共有

File Provider

Android 7.0 (API 24) への対応 (外部)ストレージ内ファイルの共有


Android 6.0 権限管理


Android 6.0 から権限管理が強化されました。

従来は、アプリをインストールしたときに、アプリの要求するすべての権限が許可されていました。

Android 6.0 からは、アプリをインストールしたときは、アプリの要求するすべての権限が不許可になります。
インストールしたあとで、アプリごとに権限を許可/不許可することができます。
端末のAPIバージョンと、アプリをビルドしたときのAPIバージョンの組み合わせにより、挙動が異なるので、まごつくことがあります。

上記に加えて、アプリが必要になったときに権限を要求する Runtime Permission という手順が推奨されます。

簡単なサンプルコードを作成して、Github で公開しました。

SDカードへの書き込み権限( WRITE_EXTERNAL_STORAGE )を要求する。

20170603_screenshot_permission_dialog

参考

実行時のパーミッション リクエスト

Android 6.0 の Runtime Permission に対応する


Android 5.0 SDカードのアクセス管理


Android 5.0 にて、
Storage Access Framework というSDカードのアクセス管理の仕組みが導入されました。

Content Provider を機能拡張した感じです。

いろいろと機能が豊富で、説明を読んでもよく理解できない。

簡単なサンプルコードを作成して、Github で公開しました。

画像ファイルを指定して、Picker を呼び出す。

20170602_strage_access_picker

参考
ストレージ アクセス フレームワーク

Android5.0で可能になったSDカードへの書き込みを試す

Android 5.0以降のSDカード書き込み制限について今更ながら知ったこと


Android 4,4 SD カードの書き込み制限


Android 4,4 からSD カードの書き込み制限が強化されました。
以前は、SD カードの全領域に対し、書き込み可能でしたが。
4.4 からは、アプリの固有領域とアプリ間の共通領域のみになりました。

アプリの固有領域は、
content#getExternalFilesDirs() で取得できます。
WRITE_EXTERNAL_STORAGE権限は不要です。

アプリ間の共通領域は、
Environment#getExternalStoragePublicDirectory() で取得できます
WRITE_EXTERNAL_STORAGE 権限と READ_EXTERNAL_STORAGE 権限が必要です。

サンプルコード
2種類のサンプルコードを作成して、 github で公開しました。
(1)アプリ固有領域への書き込み
(1)異なるアプリからアプリ共有領域への書き込み

参考
Android 4.4 APIs

Android 4.4におけるSDカード書き込みを試してみる – m-kawato’s diary