Моя проблема в том, что мне не удается создать каталог на SD-карте, подключенной к переносному устройству Android. Ниже приведен код Java, который я пытаюсь заставить работать: Я пытаюсь создать каталог sable
в /storage/BF4F-1107/
:
public class AnActivity extends AppCompatActivity
{
private static final int N_CREATE_DIRECTORY = 1;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// SD card
String s_sdCardStorage = "/storage/BF4F-1107/";
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/*");
intent.putExtra(Intent.EXTRA_TITLE, s_destFilePath);
startActivityForResult(intent, N_CREATE_DIRECTORY);
// HERE
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == N_CREATE_DIRECTORY)
{
if(data != null)
{
Uri uri = data.getData();
DocumentFile docFileSDCardStorage = DocumentFile.fromSingleUri(this, uri);
try
{
DocumentFile docFileDir = docFileSDCardStorage.createDirectory("sable");
}
catch(UnsupportedOperationException exn)
{
System.out.println(exn.getMessage());
}
}
}
}
}
Что происходит:
- выполняется код из
onCreate()
. - Затем программа блокирует
// HERE
. - На портативном устройстве появляется «диалоговое окно», в котором отображается
/storage/BF4F-1107/
и кнопка Save
, который я «нажимаю». - После «нажатия» выполняется код из
onActivityResult()
.
Но в результате каталог sable
в /storage/BF4F-1107/
не создается. И путь выполнения проходит через предложение catch, возникает исключение UnsupportedOperationException
и null печатается в System.out.println(exn.getMessage());
.
Edit 2: пустой файл _storage_BF4F-1107_
создается в /storage/BF4F-1107/
.
Можете ли вы помочь мне заставить этот код работать?
Кроме того, я бы хотел, чтобы каталог sable
создавался незаметно. Я не хочу, чтобы пользователь нажимал «Сохранить».
Я пытаюсь использовать Storage Access Framework
(https://developer.android.com/training/data-storage/shared/documents-files), потому что метод mkdirs
из java.io.File
класс не работает (я получаю исключения с отказом в разрешении), когда я пытаюсь создать каталог на SD-карте.
Изменить: моя Android версия 6.0.1
Спасибо .