android api 23+, запись файла в корень внешнего хранилища - PullRequest
0 голосов
/ 28 ноября 2018

Я могу создать папку в корне внешнего хранилища USB / SD, но не файл.Это ограничение Android или что-то не так с моими разрешениями.

При создании файла я получаю сообщение "java.io.IOException: Permission denied".

Сначала я проверяю своиразрешения, и они кажутся в порядке.

if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
 ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 3);
}

if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
 ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
}

Затем я сканирую свое внешнее устройство, и я нашел их.SD -> mnt / media_rw / 0123-4567USB -> mnt / media_rw / B80A-07EC

Как USB, так и SD имеют одинаковое поведение, поэтому я приведу только пример кода SD.

String folder = "/testfolder/";
String file = "testfile.txt";

-

check = new File("mnt/media_rw/0123-4567" + file).createNewFile();

Это приведет кa "java.io.IOException: Permission denied"

check = new File("mnt/media_rw/0123-4567" + folder).mkdirs();
check = new File("mnt/media_rw/0123-4567" + folder + file).createNewFile();

Это приведет к созданию папки с файлом внутри нее.

Не обращайте внимания на имена переменных, это толькопример /

...