インターネット上にある MP3ファイルをダウンロードして、外部メディアに保存するというシンプルなアプリを作成してます。ダウンロード部分はすんなり実装できたが、外部メディア上のディレクトリ作成でハマる 😅
dir.mkdirs() の戻りが常に failしている。manifestsの設定もしているのになぜ?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
File dir = new File(Environment.getExternalStorageDirectory(),"/Podcasts/temp"); if(!dir.exists()) { dir.mkdirs(); }
結論から言うと、manifestsで宣言をしただけでは書き込みは出来ない。よって、ディレクトリを作成する前に、ユーザの許可を得る必要がある(普通に考えれば当たり前の事に気づかない…)
int PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); }
似たような事でハマらないように、ご参考まで