質問: 0; System.out.println("ファイル削除成功"); } else { //失敗したら、0.1秒ごとにスリープしてリトライする try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } else { System.out.println("ファイルが存在しない"); } ```
回答: コンパイルに用いたSDKのAPIレベルが記述されていませんが、API 23からは端末の資源のアクセス権限を2つのグループに分けて、**Dangerous permissions**として分類されたものについては、プログラムコードの中で許可を得るためのAPIを呼び出して、それによって表示されるダイアログで「許可」をタップすることで、その資源へのアクセスができるような仕組みが導入されました。こうした手続きを**Runtime Permission**と呼んでいます。 内部ストレージの読み書き権限もDangerous permissionsに含まれているため、compileSdkVersionが23以上(端末のAndroidバージョンではない)ならば、その手続きに従ったコードを記述して許可を得なければ、内部ストレージを読み書きすることはできません。 許可を得るための記述方法については、Runtime Permissionというキーワードで検索すれば資料が多く見つかると思います。以下、参考資料例です。 Request App Permissions - Android Developers(公式) あらためてRuntime Permissionと実装方法をおさらいする [Android] Runtime Permission, Dangerous Permission