private void triggerStorageAccessFramework() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_STORAGE_ACCESS);
}
@Override protected void onActivityResult (int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult (requestCode, resultCode, данные); если (requestCode == REQUEST_CODE_STORAGE_ACCESS) {
if (resultCode == Activity.RESULT_OK) {
// Get Uri from Storage Access Framework.
Uri treeUri = data.getData();
// Persist access permissions.
final int takeFlags = data.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(treeUri, takeFlags);
DocumentFile pickedDir = DocumentFile.fromTreeUri(DocumentTreeActivity.this, treeUri);
DocumentFile rootDir = pickedDir.findFile("Images");
if (rootDir == null || !rootDir.exists()) {
rootDir = pickedDir.createDirectory("Images");
}
} }
Я могу создать папку, я могу читать и записывать файлы из / в папку. Позже, после запуска приложения для очистки (встроенного, Redmi note 8 pro), папка и файлы были удалены. Сомневаюсь, что папка определяется как остаточная. Кто-нибудь, пожалуйста, помогите. Прости мой плохой английский
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
Лучше убрать эти флаги. В них нет смысла. Вы не можете ничего дать. - person blackapps   schedule 30.03.2021