Android M(API 23)以降から権限が厳しくなりました 随分昔の話です
AndroidManifest.xml
に欲しい権限を記述し,Fragmentなどを使ってユーザーに許可させる対話的なUIが増えました
外部ストレージにログを吐き出すコードをよく書くのですが,いい感じにモジュール化したくて書いたところ権限周りでエラーが発生しました.
fun writeText(message: String): Boolean {
val fos = FileOutputStream("${getExternalStorageDirectory().path}/${this.fileName}", true)
fos.write(message.toByteArray())
fos.close()
return true
}
こんな感じのコードを試したら
java.io.FileNotFoundException: /storage/emulated/0/test.csv (Permission denied)
と怒られました.ユーザーの許可が必要なのを忘れていたのです.
以下は解決の手順です.
- 実機をつなぎます
- Android JUnitで実機を使ってテストを
- テスト落ちるのですが,本体にアプリが入っています
- 設定→アプリ→(自分が開発しているアプリ)→許可を選択し,対応する権限を付与します
よくやるあれなのですが,JUnitでテストやってるときにアプリが入っているとは思わなかったので戸惑いました