#java #android #android-10.0 #storage-access-framework #android-11
#java #Android #android-10.0 #хранилище-доступ-фреймворк #android-11
Вопрос:
Я пытаюсь сохранить текстовый файл с помощью SAF (платформа доступа к хранилищу), но я не могу контролировать, где он должен быть сохранен, я использовал этот метод из документации следующим образом:
private void createFile(Uri pickerInitialUri) {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/*");
intent.putExtra(Intent.EXTRA_TITLE, "new.txt");
// Optionally, specify a URI for the directory that should be opened in
// the system file picker when your app creates the document.
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri);
startActivityForResult(intent, CREATE_FILE);
}
Передача Uri корневого каталога следующим образом:
Uri.parse(Environment.getExternalStorageDirectory().toString())
Но какую бы строку я ни анализировал, и даже если я передаю null как Uri, пользовательский интерфейс framework всегда запускается при загрузке.
Я хочу сохранить файл в корневом каталоге. кроме того, я хочу сохранить его автоматически без какого-либо взаимодействия с пользователем.
Комментарии:
1. Используйте uri, который вы получили ранее, выбирая каталог или файл. Вы не можете создать эти uries самостоятельно.
2. Вы не можете сохранить с помощью SAF без хотя бы одного взаимодействия с пользователем.
3. @blackapps вы имеете в виду, что я должен получить uri из журналов или через отладчик из onActivityResult? Я не совсем понимаю, что вы подразумеваете под uri, который я получил ранее
4. @balckapps начальный каталог всегда находится там, где я сохранял в последний раз.. если начальный каталог загружается впервые, как я упоминал в вопросе
5.
the starting directory is always where I saved the last time.
Да, если вы ничего не делаете. Перечитайте мой первый комментарий.
Ответ №1:
Цитирование документации для EXTRA_INITIAL_URI
:
[Дополнительный] должен указывать URI документа или URI дерева с идентификатором документа.
«URI документа» — это тот, который вы получили ранее из ACTION_OPEN_DOCUMENT
или ACTION_CREATE_DOCUMENT
. «URI дерева» — это тот, который вы получили ранее ACTION_OPEN_DOCUMENT_TREE
. Uri.parse()
не является ни тем, ни другим.
Комментарии:
1. Спасибо за разъяснение, оказывается, что SAF не подходит для моего варианта использования.. Я хочу проверить устройство, сохранив текстовый файл с серийным номером в каталоге, отличном от каталога приложения, потому что я хочу, чтобы этот файл был в безопасности, если пользователь удалил и переустановил приложение. SAF не подойдет, поскольку этот файл считывается при входе в систему, и пользователь не долженперейдите к каждому входу в этот каталог .. есть предложения о том, как мы можем это сделать?
2. @mahmoudsfares: Извините, но то, что вы ищете, на самом деле не поддерживается шаблоном в современных версиях Android.