Android M(SDK 23) から permissions の扱いが変わっていますが, N(SDK 24)では permissions の設定がまたさらに変わっているようです.
sdcard からファイルを読みたい.
漢だったら, アプリ開発時には /sdcard
からファイルを読み書きしたいですね!
しかし NDK で fopen
, ifstream
などで /sdcard
にアクセスしようとするとファイルが見つからないというエラーが出るようになります(Java レイヤーでもそうですが).
そのため, AndroidManifest.xml
で READ_EXTERNAL_STRAGE
, WRITE_EXTERNAL_STRAGE
の permission を設定する必要があります.
<uses-permission-sdk-m android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission-sdk-m android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
を見ると, uses-permission
ではなく uses-permission-sdk-m
が推奨のようです.
Android N
Android M では上記の設定で /sdcard
からのファイルが読み書きができるようですが, Android N ではこれだけでは不十分で, さらに実行時にユーザに permission の許可を求める必要があります.
でも NDK で C++ でアプリ作っている時に, 上記サンプルのように Java で permission を求めるコード書くのはめんどくさすぎですね...
一旦 apk をインストール後, Android 実機で Settings -> Apps -> YOUR_APP -> Permission で設定できました. これで /sdcard
を読み書きできるようになります.
(apk 上書きでアップデートの場合は permission は引き継がれるっぽい)
TODO
- 優秀な Android N 若人を, 合法的なあらゆるどんな手段を使ってでも探し出し, 優秀な Android N 若人が自ら Android 開発の高みを極めてくれるスキームを確立したい