/mnt/sdcard の外部 SD に書き込もうとはしていません。5 つのアプリ ファイル用のフォルダーを作成し、他のユーザーがアクセスできるようにしようとしています。
データをエクスポートするときに .csv ファイルを生成する Libra というアプリがあり、すべてが /Libra/ フォルダーに移動します。アプリで同じことをしたい。
私が見た限りでは、sd である外部ストレージと、アプリの非公開の場所である内部ストレージがあります。
LibraのようにAndroidファイルシステムのルートにディレクトリを作成するにはどうすればよいですか?
外部ストレージを要求すると、次の望ましくない場所が表示されます。
Environment.getExternalStorageDirectory()
/storage/emulated/0/ (in my Nexus) /mnt/sdcard (in the emulator)
絶対パス /MyDiary にフォルダーを作成しようとすると、フォルダーの作成中にエラーが返されます
File folder = new File("/MyDiary");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Toast.makeText(getBaseContext(), "Already exists", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getBaseContext(), "Error creating directory", Toast.LENGTH_LONG).show();
return;
}
Libra フォルダーが存在するかどうかを確認しようとすると、存在しないと表示されます。
File folder = new File("/Libra");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Toast.makeText(getBaseContext(), "Libra exists", Toast.LENGTH_LONG).show();
}
注: 外部ストレージに書き込むためのマニフェスト アクセス許可があります。